- 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 vidéo, on va afficher la couverture de nos tests avec la librairie Coverage.On va déjà l'installer à l'intérieur de notre dossier et de notre environnement virtuel.
00:00:09 :N'oubliez pas de sourcer votre environnement qui, dans mon cas, se trouve dans le dossier .env.Je vais le sourcer.Ensuite, on peut installer Coverage avec pip install coverage et en valide en appuyant sur Entrée.
00:00:21 :On attend que la librairie soit installée.Vous voyez, c'est très rapide.La librairie a été correctement installée.Si je fais pip list, je vois bien que j'ai maintenant Coverage 5.4 qui est dans mon environnement virtuel.
00:00:32 :Et je vais pouvoir utiliser la commande Coverage run pour exécuter mes tests.Coverage run va remplacer la commande Python.Plutôt que de faire python-m unitest et ensuite le nom de notre fichier, dans ce cas citest,on va remplacer Python par Coverage run.
00:00:50 :On valide en appuyant sur Entrée.Et là, Coverage run va lancer nos tests.Là, on voit que quatre tests ont été correctement effectués.On a le OK ici qui nous dit que tous les tests ont été passés avec succès.
00:01:02 :Et si je viens voir dans mon dossier tout en haut à gauche, on voit que j'ai maintenant un fichier .coverage.On va pouvoir, maintenant que le coverage a été réalisé,créer un fichier HTML à partir de la couverture de test que l'on vient de réaliser.
00:01:15 :Pour ça, on va faire la commande Coverage HTML.On appuie sur Entrée.Et là, si je retourne voir tout en haut à gauche dans mon dossier,on voit que j'ai maintenant un dossier html.cov qui va contenir pas mal de choses,
00:01:26 :et notamment un fichier index.html que l'on peut ouvrir dans un navigateur web pour vérifier la couverture de test.Donc je prends ce fichier HTML, je le glisse par exemple ici dans Chrome,et on voit qu'on a une couverture de test qui, dans ce cas-ci, est égale à 100%.
00:01:42 :Donc sur les deux fichiers, sur main.py et test.py, on a une couverture de 100%.Et on peut aller voir à l'intérieur des fichiers.Donc je peux cliquer sur le fichier.
00:01:51 :Et là, on va avoir un aperçu qui nous montre tout ce qui a été testé dans le fichier.Donc en fait, quand on a une ligne verte ici, ça veut dire que cette ligne a été exécutée,cette ligne aussi, etc.
00:02:01 :Donc là, toutes les lignes ont été exécutées.Si on revient en arrière et qu'on regarde sur main.py, on voit que c'est la même chose.On a une fonction ici, Add, qui est en vert.
00:02:11 :Donc les deux lignes de cette fonction sont en vert.On a ici l'indication qu'il y a eu deux lignes d'exécuté.Et donc le coverage de ce fichier main.py est bien de 100%.
00:02:20 :Et si je reviens sur l'index, on a donc une couverture complète de notre code.Donc ce que ça veut dire vraiment ici, c'est juste que notre code a été exécuté à 100%.
00:02:28 :Ça ne veut pas forcément dire que notre code ne faillira jamais et que tout marche correctement, etc.Ça veut juste dire, tout simplement, que toutes les lignes de code dans ces deux fichiersont été interprétées par Python.
00:02:40 :C'est vraiment tout ce que ça veut dire.Et donc si on revient dans notre fichier et qu'on fait, par exemple, une autre fonction.Donc là, par exemple, pour diviser, on va faire divide A par B.
00:02:49 :Donc je fais A divisé par B.Et que je relance tout ça.Donc je reviens dans mon terminal ici.Et je relance coverage run m unitest test.
00:02:58 :Là, on a toujours nos quatre tests qui ont été effectués.Et si je refais coverage html pour régénérer tous les dossiers et les fichiers html ici,je vais pouvoir donc revenir dans mon fichier index, actualiser.
00:03:10 :Et là, vous voyez que notre couverture de test est maintenant moindrepuisqu'on a une couverture totale de 94%.Et dans notre fichier main.py, si je vais regarder ici,
00:03:20 :on voit qu'on a bien cette ligne qui est exécutée.Puisque lorsqu'on définit une fonction, cette définition est exécutée par Pythonlorsqu'on va importer le script, par exemple.
00:03:30 :Mais le return A divisé par B ici n'est jamais exécuté.Puisqu'on utilise cette fonction nulle part, on ne la teste pas.Donc le return de A divisé par B n'est jamais exécuté.
00:03:40 :Donc on a ici trois lignes qui ont été exécutées.Une qui est missing. Et on a donc une couverture de test de 75%.Donc c'est normal, 3 sur 4, ça fait 75%.
00:03:50 :Et donc si je reviens sur le index, là on a une couverture de 100% pour les testsparce que dans les tests, toutes les lignes sont exécutées.
00:03:56 :Donc là, attention, encore une fois, ça ne veut pas dire que vous avez testé 100% de votre code,ça veut juste dire que 100% de vos tests ici dans votre fichier ont été exécutés.
00:04:04 :Mais là, dans ce cas-ci, on n'a pas encore testé notre deuxième fonction.Ce que l'on voit avec cette couverture de test moindre ici sur le fichier main.py.
00:04:12 :Et donc ça nous fait un total de 94%.Et donc comme je vous disais, le but n'est pas avec le coverage d'arriver forcément à 100%,mais au moins avec cet outil, on a une vision très claire et très préciseet facile à visualiser de qu'est-ce qui est exécuté dans notre script
00:04:28 :et qu'est-ce qui reste encore à être testé.Donc là notamment, on voit que comme cette fonction n'est pas exécutée,et bien on peut en déduire qu'elle n'a pas été testée.
00:04:38 :Donc ça veut dire que dans notre fichier de test, il va falloir rajouter des tests pour cette fonction.Donc là, si je vais dans test.py, je peux rajouter un test.
00:04:45 :Donc on va importer également divide ici et on va faire un test pour cette fonction.Donc on va dire test divide with two numbers.Et là, on va faire un assert equal.
00:04:58 :Et on va dire divide, on va diviser 10 par 2 et on s'attend à ce que ça nous retourne 5.On lance le test. Le test passe correctement.
00:05:06 :Donc je peux retourner dans mon terminal, relancer tout ça.Donc je refais un coverage run munitest test.Là, on a 5 tests cette fois-ci qui sont passés.
00:05:15 :Je relance un coverage html.Je reviens dans mon explorateur, j'actualise et là j'ai bien de nouveau une couverture de test à 100%.Puisque si je vais voir dans main.py, là on a bien cette ligne cette fois-ci qui est exécutée
00:05:26 :et elle est exécutée par le test que l'on vient de rajouter ici, qui lui aussi est exécuté.Donc là encore, comme je vous disais, ça teste juste qu'on a bien exécuté cette ligne de code.
00:05:35 :Que du coup cette ligne, donc cette fonction a bien été exécutée.Mais ça ne veut pas dire que cette fonction fonctionne à tous les coups.
00:05:42 :On a testé un cas de figure et il y a plein de choses qui pourraient ne pas fonctionner avec cette fonctionet qu'on aurait envie de tester dans notre fichier de test.
00:05:50 :Donc on peut avoir un coverage à 100% et pour autant avoir un script qui n'est pas forcément 100% infaillible.Donc voilà comment créer cette couverture de test avec la librairie coverage.
00:06:00 :Donc vraiment la chose à retenir, c'est pour lancer les tests, vous remplacez la commande Python tout simplement par coverage run.Et après tout le reste c'est pareil ici.
00:06:08 :Vous pouvez même rajouter le tiret V pour avoir un affichage verbose après.Donc il n'y a aucune différence dans la commande.C'est vraiment juste au début, il faut passer par coverage run et ensuite coverage HTMLqui est un très bon moyen d'afficher directement dans un navigateur internetde façon assez interactive en étant capable d'aller ici dans les fichiers, de filtrer, de chercher tout ça dans notre script.
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.