Tests pour les méthodes delete et save
Exclusif Premium
Débloquez votre potentiel ! ✨
Cette session fait partie de notre programme Premium exclusif
+100h de formations exclusives
+180 exercices de code avancés
+100h de mentorats en réécriture
20 projets guidés pas à pas
Mentorats groupés hebdomadaires
Support individuel avec nos mentors
Prêt à passer au niveau supérieur ?
Découvrez tous les avantages Premium et transformez votre apprentissage dès aujourd'hui!
Inscris-toi
(c'est gratuit !)
Un compte est nécessaire pour participer aux discussions.
Créer un compte00:00:00 :Dans cette partie on va créer les tests pour la fonction save et la fonction delete qui nouspermettent de sauvegarder et de supprimer un utilisateur dans notre base de données. Donc là
00:00:09 :encore on va avoir plusieurs choses à vérifier puisque en fonction des cas de figure donc enfonction de si l'utilisateur existe ou non on va avoir un comportement différent. Donc ce qu'on
00:00:19 :va faire c'est déjà vérifier le comportement de la méthode save, on va vérifier que sil'utilisateur existe on a bien moins 1 qui nous est retourné et que s'il n'existe pas et bienon récupère bien un nombre entier qui correspond à l'index de l'utilisateur dans la base de données.
00:00:34 :Donc je vais aller ici dans ma fonction de test donc dans test save, je vais là encore utiliserma base de données en mémoire et pour ce test j'ai créé deux utilisateurs qui sont identiques. Donc
00:00:45 :un premier utilisateur que j'appelais usertest et un deuxième que j'appelais usertestdupe doncdupe pour duplicate. Donc vous voyez qu'on a les mêmes informations ici John Smith avec la même
00:00:55 :adresse et le même numéro de téléphone et je sauvegarde ces deux utilisateurs dans ma basede données et je récupère ce que la méthode save nous retourne à chaque fois dans une premièrevariable que j'ai appelé first et une deuxième que j'ai appelé tout simplement second. Donc
00:01:07 :logiquement dans first ici on devrait avoir le numéro en fait qui correspond à l'utilisateurdans la base de données. Donc par exemple si je vais voir mon fichier json ici, si on insère un
00:01:17 :nouvel utilisateur dans la base de données et bien la fonction va nous retourner le numéro ici quicorrespond à l'utilisateur dans ma base de données. Et la deuxième fois vu que l'utilisateur
00:01:26 :existe déjà on va rentrer dans cette structure conditionnelle et ça va nous retourner moins 1.Et c'est donc tout ça que je vais vérifier dans mon test ici. On va déjà vérifier qu'on a bien
00:01:34 :des nombres entiers donc on va vérifier que isInstance de first est bien un nombre entierdonc un integer et on va faire pareil avec second puisque dans les deux cas de figure on récupèreun nombre entier. Donc dans le cas de first on devrait avoir un nombre qui est supérieur à 0
00:01:50 :puisque quand on insère des éléments dans la base de données le premier élément c'est 1,ensuite on va avoir 2, 3 etc et si on supprime des éléments vous voyez que là on a un peu des trousdans la raquette mais à chaque fois c'est quand même un nombre positif qu'on a comme numéro ici
00:02:02 :pour les utilisateurs. Donc ce qu'on va faire c'est vérifier que le nombre de first qui nous estretourné est plus grand que 0. Donc on va faire assert first plus grand que 0. Et pour le deuxième
00:02:13 :test on va vérifier que second est bien égal à moins 1. Donc on va faire assert second égalégal à moins 1 puisque comme l'utilisateur existe déjà ici on retourne moins 1. Donc je vais tester
00:02:25 :ma fonction ici je lance le test donc là tout passe et ça fonctionne correctement puisqu'ona le même utilisateur qui est utilisé dans les deux cas donc userTest et userTestDup. Donc là
00:02:36 :on vérifie quatre choses à la suite mais vous voyez que c'est des choses assez simples doncvraiment si on a bien un nombre entier et si on a bien ici un nombre plus grand que 0 et un nombrequi est égal à moins 1 dans le cas d'un utilisateur dupliqué. On va ensuite pouvoir tester la fonction
00:02:50 :delete. Donc delete qu'est ce qui se passe quand on supprime si l'utilisateur il existe et bien on vale supprimer et ça va nous retourner une liste de nombres entiers. Donc là c'est intéressant vous
00:02:59 :voyez d'avoir cette annotation de type que l'on avait rajouté au moment de créer notre classepuisque on sait déjà sans même avoir besoin d'exécuter notre fonction ici quel type de valeuron s'attend à avoir. Donc dans le cas où l'utilisateur existe on va récupérer une liste
00:03:12 :avec des nombres entiers et dans le cas où l'utilisateur n'existe pas on va retourner uneliste vide. Donc là encore c'est ce que je vais vérifier à l'intérieur de ma fonction testDelete.
00:03:21 :On va remettre notre setupDB, on va créer un utilisateur de test donc là je vais toutsimplement mettre un autre utilisateur de test à l'intérieur de ma fonction. Cet utilisateur
00:03:31 :il est valide donc on va le sauvegarder dans la base de données avec save et là encore on vafaire deux tests donc on va supprimer deux fois l'utilisateur. Donc je vais dire first égale
00:03:39 :userTest.delete on va dupliquer cette ligne et là on va récupérer ça dans une variable secondet on va vérifier que dans le premier et deuxième cas de figure on a bien les infos qu'on s'attendaità avoir. Donc on va vérifier la longueur de la liste déjà puisque dans le cas de first on va
00:03:55 :récupérer une liste avec au moins un élément qui est donc l'élément qu'on a supprimé. Donc on vafaire un assert de len de first plus grand que 0. On pourrait vérifier si c'est égal à 1 ou on
00:04:06 :peut vérifier si c'est plus grand que 0, dans ce cas-ci c'est à peu près pareil. On va égalementvérifier si on a bien une liste donc on va vérifier isInstance de first est de type list et on vafaire pareil avec second sauf que cette fois-ci pour second on va vérifier que la longueur de
00:04:20 :second est égale à 0 et on va vérifier là encore qu'on est bien en présence d'une liste donc jeduplique cette ligne et je vérifie que second est bien également une liste. Je lance mon test et le
00:04:31 :test fonctionne correctement. Donc voilà pour les deux tests, le test pour le save et le test pourle delete et voilà qui termine la batterie de tests que je souhaitais faire pour ce programme.
00:04:40 :Donc comme je vous disais on pourra en faire plus ou moins c'est à vous de voir vraiment le nombrede tests que vous souhaitez faire. On pourrait en rajouter encore quelques-uns, on pourrait
00:04:47 :également tester cette fonction ici getAllUsers qui est une fonction à l'intérieur de notrepackage donc ça pourrait être une bonne idée de la tester également. Juste avant de terminer cette
00:04:56 :vidéo je vais relancer les tests sur le fichier au complet puisque là on a fait des tests isolésà chaque fois en lançant juste une fonction. Donc je vais relancer tous les tests au complet, je vais
00:05:04 :faire un clic droit sur le fichier ici donc sur l'onglet et je vais cliquer sur RunPyTest sur cefichier et là vous voyez qu'on a bien tous nos tests qui passent correctement et c'est vraimentdonc l'intérêt d'avoir une bonne couverture comme celle-ci puisque comme je vous disais si on change
00:05:17 :quelque chose par exemple si ici on met false à la place de moins un et bien nos tests nefonctionneront plus. Je vais relancer les tests et là vous voyez qu'on a un test qui ne fonctionne
00:05:26 :plus le test save et c'est normal puisqu'on s'attendait à avoir moins un et là on a false. Doncvous voyez vraiment qu'avec juste quelques lignes de code ici on a une centaine de lignes de codede test et bien la moindre ligne qu'on change ici ou presque à part pour les fonctions qu'on n'a pas
00:05:40 :testé comme ici mais pour presque tout le reste ici qui a été quand même abondamment testé, lemoindre changement que l'on ferait ici donc par exemple si on change un espace que l'on changeici notre regex, que l'on change le message d'erreur ou quoi que ce soit ici qui modifierait
00:05:54 :la façon dont fonctionne notre script et bien ces changements vont être récupérés par nos tests quivont pouvoir nous avertir que notre script ne fonctionne plus de la bonne façon. Alors là
00:06:03 :encore c'est bien important de comprendre ce que je veux dire par là ça ne veut pas dire que votrescript ne fonctionne plus ça veut juste dire qu'il ne fonctionne plus comme il fonctionnaitauparavant puisque vos tests vraiment ils vérifient uniquement ce que vous avez testé etdonc si vous avez fait des changements et que ces changements sont volontaires et bien vous pouvez
Ce n'est pas fini...
✋
Tu as complété % du parcours 🔥
Termine l'intégralité de la formation pour pouvoir débloquer ton attestation de réussite.