- Formations
- conversion_path Parcours & Formations
- science Projets
- data_object Exercices de code
- psychology Exercices IA
- quiz Quiz
- Articles
- rss_feed Blog
- sort_by_alpha Glossaire
- menu_book Guides
- help_center FAQ
- media_link Ressources
- Communauté
- groups La communauté
- forum Questions
- live_tv Mentorats
- science Projets mensuels
- Formations
- conversion_path Parcours & Formations
- science Projets
- data_object Exercices de code
- psychology Exercices IA
- quiz Quiz
- Articles
- rss_feed Blog
- sort_by_alpha Glossaire
- menu_book Guides
- help_center FAQ
- media_link Ressources
- Communauté
- groups La communauté
- forum Questions
- live_tv Mentorats
- science Projets mensuels
Inscris-toi
(c'est gratuit !)
Un compte est nécessaire pour participer aux discussions.
Créer un compte person00:00:00 :Dans cette partie on va rajouter des tests dans notre fichier test.py pour tester d'autres casde figures avec notre fonction add qui permet d'ajouter deux nombres. Pour l'instant on a
00:00:10 :testé avec des nombres mais il va falloir tester d'autres cas de figures et s'assurer que ces casde figures sont gérés de la façon dont on le souhaite. Donc pour l'instant on teste uniquement
00:00:20 :avec deux nombres, on va tester également avec deux lettres. Donc on va dire test add with twoletters cette fois-ci et on va tester, petit typo ici, letters comme ceci, on va tester l'égalitédonc avec assert equal entre notre fonction avec des lettres cette fois-ci. Donc on va passer deux
00:00:38 :chaînes de caractère a et b par exemple et on va vérifier si c'est égal à a b. Donc là on saitque ça va être bon mais on va quand même lancer le test pour vérifier. Donc je peux cliquer sur la
00:00:48 :flèche juste à côté de la fonction test add with two letters pour lancer uniquement ce test. Doncje clique sur run unit test for test et ça va lancer uniquement ce test. Et là vous voyez que
00:00:58 :ça fonctionne correctement. On pourrait rajouter d'autres tests, par exemple tester avec desbooléens. Donc on va faire test add with two booléens et là dans ce cas-ci on va avoir plusieurs
00:01:09 :cas de figures puisqu'on pourrait ajouter par exemple avec deux booléens true, deux booléensfalse, un true, un false. Donc il y a différentes choses qu'on peut faire et on peut mettre plusieurs
00:01:19 :assert equal dans la même méthode. Généralement il est préférable de séparer le plus possible leschoses pour ne pas avoir à l'intérieur d'une même fonction de test ici trop de cas de figures. On
00:01:29 :veut qu'un test ça teste une chose uniquement. Là dans ce cas-ci on teste avec deux booléensmais à l'intérieur de ce test on peut avoir différentes façons d'envoyer les booléens. Donc
00:01:37 :on va déjà tester encore une fois avec assert equal que si on envoie par exemple true et false,donc là on va avoir un résultat de 1 puisque true c'est égal à 1 et false c'est égal à 0. On peut
00:01:48 :additionner des booléens les uns avec les autres donc là on va vérifier que 1 plus 0 est bien égalà 1. On va ensuite faire les autres cas de figure donc on va faire true avec true et on va faire
00:02:00 :true avec false. Donc là si je lance le test actuellement vous allez voir donc en cliquantsur la petite flèche ici je lance uniquement ce test. Là vous voyez que ça ne marche pas et on
00:02:10 :a 1 qui est différent de 2. Donc il s'attendait à avoir 2 et en fait on a eu 1. On voit bien quel'erreur dans ce cas-ci se trouve à la ligne 15 donc avec cette ligne ici dans laquelle on ajoutedeux fois le booléen true donc 1 plus 1 c'est censé faire 2. Ensuite on a true et false ici
00:02:24 :alors j'ai oublié de changer le true ici je vais mettre false avec false et dans ce cas-ci ça vaêtre égal à 0. Donc je relance mon test en cliquant sur la flèche et là cette fois-ci ça passe bien.
00:02:34 :Et on peut continuer avec d'autres cas de figure comme ça donc tester d'autres types de donnéesqu'on souhaiterait vérifier et là encore une fois vous voyez que dans ce cas-ci c'est assezévident. On ajoute des types de données qu'on connaît donc notre fonction fonctionne correctement
00:02:49 :et ça peut sembler un peu inutile de rajouter plein de tests comme ceci. Mais là en fait oùça devient vraiment utile c'est si vous testez ce que votre fonction est censé faire. Là dans ce
00:02:58 :cas-ci on considère que notre fonction avec la fonction add donc on peut ajouter des chaînesde caractère ensemble. Donc là actuellement notre script fonctionne de la façon dont on a créé nos
00:03:08 :tests. Par exemple si quelqu'un là encore décide de modifier notre fonction et vérifier parexemple si A ou B sont des chaînes de caractère et ainsi empêcher l'addition de chaînes decaractère donc en faisant par exemple if isInstance A string or isInstance B string et là il fait un
00:03:25 :return de none par exemple et bien là si on relance tous les tests donc je reviens ici etje clique sur la flèche verte de ma classe pour lancer tous les tests, là vous voyez qu'automatiquementles tests ne passent pas. Et ce que ça nous indique ici ce n'est pas uniquement A ce test ne passe
00:03:38 :pas donc on va le modifier ici pour que ça marche avec notre fonction. Ce qu'il faut c'est vraimentse demander pourquoi ça ne marche pas et est-ce que c'est ce que vous souhaitez. Là en fait quand
00:03:47 :un développeur a rajouté ça dans notre fonction le fait que le test ne passe pas ça nous indiqueuniquement que notre programme ne fonctionne plus de la même façon qu'auparavant. Là dans ce cas-ci
00:03:57 :on a modifié directement la fonction qu'on testait mais là où vous allez voir des cas de figure unpeu plus intéressant c'est quand on a ce qu'on appelle des effets de bord. Par exemple si vous
00:04:05 :modifiez quelque chose dans une fonction, imaginons qu'on modifie cette fonction et quetous les tests de cette fonction passent mais que cette fonction est utilisée ailleurs pour faireautre chose. Par exemple dans un programme qui sert de calculatrice on utiliserait cette fonction
00:04:17 :pour additionner des choses ensemble et là en modifiant cette fonction on pourrait avoir lestests qui sont brisés sur une autre partie de notre programme. Et donc si vous testez l'intégralité
00:04:26 :de votre code et bien normalement vous êtes assuré que si jamais il y a quelque chose quine fonctionne plus comme vous l'aviez prévu dans les tests et bien vous serez averti. Dans
00:04:35 :le cas où on pourrait avoir des erreurs puisque là dans ce cas-ci on pourrait encore avoir deserreurs, là je vais enlever cette condition ici, je vais juste donc enlever le if et retourner à aplus b. Si on essaye d'additionner ensemble l'objet none qui signifie donc rien en python,
00:04:48 :on peut faire donc une fonction test add with to none. Et là le problème c'est que dans cetteméthode ça va retourner une erreur. Donc je vais vous montrer, je vais faire par exemple un assert
00:05:00 :equal et on va dire que on ajoute none avec none et on pourrait dire par exemple on s'attend à ceque ça retourne 2 mais si je lance ce test vous allez voir que là ça ne fonctionne pas. Et si
00:05:10 :on descend ici qu'est ce qu'on a ? On a une erreur de type donc avec le return a plus b qui ne fonctionnepas car on ne peut pas ajouter deux objets none ensemble. Donc là il y a deux possibilités qui
00:05:20 :s'offrent à nous. Soit on considère que notre fonction ici elle doit gérer ce cas donc que sipar exemple on envoie none dans a et dans b et bien on décide de faire quelque chose avec doncpar exemple de lever une erreur ou de faire un print ou de retourner moins un ou quoi que ce
00:05:35 :soit. Donc on pourrait tester ici if a is none or b is none et gérer ce cas de figure ici dans lafonction. Ou alors vous considérez que c'est normal que votre fonction ne doit pas permettre
00:05:45 :d'ajouter deux objets de type none ensemble et que ça ne doit pas être donc géré dans votrefonction. Et dans ce cas ci on va devoir gérer le fait que quand on utilise cette fonction de
00:05:55 :cette façon et bien Python nous retourne une erreur. Une erreur de type type error comme onl'a vu en lançant notre test. Si je lance le test ici on a une erreur de type type error. Alors la
00:06:05 :façon de faire pour tester si une erreur est levée c'est de passer par un context manager.Donc ce qu'on appelle un context manager avec Python c'est quand on a le width ici qui va nouspermettre de tester si une erreur est levée. Donc on va faire self.assertRaises comme ça avec
00:06:21 :un s donc bien attention de mettre le s ici. Et on va vérifier si une erreur de type typeerror est levée en utilisant add none avec none. Donc là on utilise width ensuite on utilise
00:06:33 :assertRaises. On utilise le type d'erreur qu'on veut vérifier donc dans ce cas ci c'était uneerreur de type type error. Et on dit donc quelle fonction on veut utiliser pour vérifier si cette
00:06:44 :erreur est levée. Donc là dans ce cas ci c'est notre test on teste si on peut ajouter none avecnone. Et si je relance uniquement ce test là vous voyez que le test passe. Donc en fait la fonction
00:06:54 :retourne une erreur mais c'est ce qui est attendu. On s'attend à ce que notre fonction retourne uneerreur. Donc là ce qu'il faut vraiment comprendre c'est que dans ce cas ci notre fonction ne marche
00:07:03 :pas. Elle va retourner une erreur si on essaye de l'appeler avec none et none. Mais le test luifonctionne puisque le test il vérifie que la fonction ne marche pas. Donc je sais pas si vous
00:07:12 :avez bien compris ça. Repassez dessus si ce n'était pas très clair. Il faut bien comprendre ladifférence entre les deux. On peut avoir une fonction qui ne marche pas et un test qui marche
00:07:19 :si le test vérifie que la fonction ne marche pas. Donc voilà réécoutez tout ça tranquillement çapeut peut-être vous retourner un petit peu le cerveau au début. Mais vous voyez qu'on peut
00:07:27 :tester donc tout un tas de cas de figure. Des cas de figure qui fonctionnent qui ne fonctionnent pasqui vont donc lever des erreurs comme on vient de le faire ici. Et là encore les tests ça ne
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.