- conversion_path Parcours & Formations
- science Projets
- data_object Exercices de code
- psychology Exercices IA
- quiz Quiz
- rss_feed Blog
- sort_by_alpha Glossaire
- menu_book Guides
- help_center FAQ
- media_link Ressources
- groups La communauté
- forum Questions
- live_tv Mentorats
- science Projets mensuels
Formations
Articles
Communauté

La certification qualité a été délivrée pour la catégorie d'actions « Actions de formation ».
- conversion_path Parcours & Formations
- science Projets
- data_object Exercices de code
- psychology Exercices IA
- quiz Quiz
- rss_feed Blog
- sort_by_alpha Glossaire
- menu_book Guides
- help_center FAQ
- media_link Ressources
- groups La communauté
- forum Questions
- live_tv Mentorats
- science Projets mensuels
Formations
Articles
Communauté

La certification qualité a été délivrée pour la catégorie d'actions « Actions de formation ».
Deviens membre Premium magic_button
Débloque cette session en devenant Membre Premium 🚀
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 créer notre premier test donc on va pour ça devoir créer un fichier danslequel on va créer nos premiers tests. On va avoir plusieurs fichiers au final pour différents types
00:00:09 :de tests donc pour par exemple les tests concernant les modèles, les tests concernant les vues et onva faire ça également pour chaque application. Donc le premier fichier qu'on va créer on va le
00:00:18 :faire à l'intérieur de l'application store puisqu'on va vouloir tester les modèles de cetteapplication. Vous remarquerez qu'à l'intérieur de ce dossier store on a un premier fichier test.py
00:00:29 :qui est automatiquement créé quand on crée une application avec Django. Donc dans ce fichiergénéralement on peut écrire des tests. Vous voyez qu'on a comme pour les modèles ou les vues déjà
00:00:38 :un import qui est fait avec un commentaire qui nous indique que l'on peut créer nos premierstests ici. Dans mon cas je vais préférer faire un sous-dossier à l'intérieur de ce dossier store
00:00:47 :dans lequel on va stocker tous les tests puisqu'on va vouloir séparer les tests des modèles destests des vues. Donc on va avoir plusieurs fichiers et ça va commencer à devenir un peu bordélique
00:00:56 :en fait si on met tout simplement tout à l'intérieur de ce dossier store. Donc je vais tout ranger àl'intérieur d'un sous-dossier test donc je vais faire un clic droit new directory et on va l'appelertest au pluriel comme ceci. Je vais supprimer ce fichier test puisque je n'en aurai pas besoin
00:01:10 :et à l'intérieur de ce dossier test on va créer un nouveau fichier python qu'on va appeler test-models.pyDonc à l'intérieur de ce fichier on va créer notre premier test et pour créer cepremier test on va créer une classe qui hérite de testcase donc on va l'importer à partir de
00:01:26 :django.test on va importer testcase et on va créer une classe qu'on va appeler dans ce cas-ciproduct-test qui va hériter de cette classe testcase. A l'intérieur de cette classe on va
00:01:36 :créer à chaque fois des fonctions qui vont nous permettre de tester différentes choses sur nosmodèles. Donc par exemple on va créer un premier test qui va nous permettre de vérifier si le
00:01:44 :slug est automatiquement généré et de la bonne façon quand on crée un produit. Donc on va donnerun nom à notre test on va dire test-product-slug-is-automatically-generated doncn'hésitez pas à mettre des noms assez long pour les tests il vaut mieux être très explicitepuisque c'est ce nom donc le nom de cette méthode ici qu'on va voir quand on va lancer les tests.
00:02:07 :Donc si vous mettez un nom qui n'est pas assez explicite ça sera difficile de savoir précisémentce que fait ce test et vous allez devoir à chaque fois retourner voir dans votre code ce qu'il fait.
00:02:16 :N'hésitez pas à mettre des noms très longs et des fois vous verrez sur des tests on a des nomsqui font vraiment deux ou trois fois cette longueur pour vraiment décrire précisément ce que fait letest. Donc dans ce cas-ci on va tester si le slug est généré automatiquement puisque dans les
00:02:31 :modèles si on va voir du côté de notre product quand on sauve le modèle si le slug n'existe paset bien on en crée un automatiquement. Donc la première chose qu'on va faire c'est tout
00:02:40 :simplement créer un produit à partir de cette classe product que je vais importer donc on vadire from store.models import product et on va créer un objet tout simplement donc avec un nom,
00:02:50 :un prix, on va en mettre 10 en stock et une description donc ça c'est juste un produitque l'on crée et ensuite on va devoir vérifier donc que le slug de ce produit est correctementgénéré. Donc ce qu'on va vouloir vérifier c'est l'égalité du slug avec une chaîne de caractère.
00:03:04 :Donc pour ça on va faire self.assert equal donc sur les assertions vous avez beaucoup de chosesque vous pouvez utiliser vous avez vu avec l'autocomplétion si vous commencez à taperassert vous pouvez vérifier plein de choses on peut vérifier l'égalité on peut vérifier si unélément est égal à true on peut vérifier également si un élément est contenu à l'intérieur d'une
00:03:22 :structure de données avec assert in par exemple donc ici on pourrait vérifier qu'un élément est àl'intérieur d'une liste par exemple donc il y a beaucoup de choses ici qui sont assez explicitecomme vous le voyez not equal on a equal not equal donc à chaque fois on a également la négation
00:03:36 :qui est possible vous allez voir que la plupart du temps on va utiliser assert equal puisqu'onveut juste vérifier une égalité donc on veut vérifier dans ce cas-ci que le slug du produitdonc de self.product.slug est égal dans ce cas-ci à la chaîne de caractère sneakers-dogstring
00:03:51 :puisque là on a mis un nom sneakers-dogstring donc le slug de cette chaîne de caractère c'estexactement la même chose tout en minuscules avec un tiret entre les deux pour supprimerl'espace donc si le slug est correctement généré on va avoir l'égalité entre cettechaîne de caractère et notre slug et le test va correctement être effectué. Donc maintenant qu'on
00:04:10 :a écrit un premier test très simple on va pouvoir tester s'il fonctionne pour ça on va ouvrir unterminal je vais ouvrir un nouveau terminal ici puisque là j'ai le serveur qui roule et pourlancer notre test c'est très simple il suffit d'utiliser là encore le fichier manage.py donc
00:04:25 :python manage.py et la commande test donc la commande test par défaut elle va chercher àl'intérieur de l'intégralité de votre projet pour des fichiers qui commencent par le mot testdonc là vous voyez qu'on a bien fait attention de préfixer le nom ici de ce fichier par test et
00:04:39 :c'est ça qui fait qu'il va être automatiquement repéré par cette commande test. On pourraitégalement spécifier un test précis à lancer donc pour ça on peut le spécifier à la suite on pourraitdire qu'on souhaite lancer uniquement store.test.testmodels comme ceci donc si je fais ça
00:04:56 :et que j'appuie sur entrée vous allez voir qu'on va lancer ce test ici alors là on a une erreurc'est marqué fail alors module store test has no attribute alors oui alors ça c'est parce qu'enfait je n'ai pas fait de fichier init.py à l'intérieur de ce dossier donc il n'est pas
00:05:08 :reconnu comme un package par python donc je vais faire un nouveau fichier python init.py àl'intérieur de ce dossier de test comme ça python pourra trouver ce module à l'intérieur du dossiertest donc on va relancer tout ça python manage.py test et on donne le nom complet vers le module
00:05:26 :de test donc je lance et cette fois ci vous voyez que le test a été correctement effectué donc ona un test qui a été effectué en 0,001 secondes et il est ok. Si je modifie la chaîne de caractère
00:05:37 :donc que je mets par exemple juste sneakers et qu'on relance le test vous allez voir que cettefois ci le test n'a pas été correctement effectué et si on va voir pourquoi on voit ici qu'on a bienle nom complet comme je vous disais de la méthode donc fail avec test product log is automatically
00:05:51 :generated donc là encore c'est pour cette raison qu'il faut avoir vraiment des noms explicitesparce que c'est ce que vous allez voir dans le message d'erreur du test et qu'est ce qu'on aici et bien on a une assertion error puisque on a une différence entre sneakers dogstring ici et
00:06:05 :sneakers donc ça signifie que l'égalité n'est pas vérifiée puisque nous on s'attendait avecassert equal avoir une égalité parfaite entre ces deux termes et là on n'a pas cette égalité etdonc le test ne passe pas. Si je remets sneakers dogstring par contre et que je relance le test
00:06:19 :là vous voyez que ça fonctionne donc ça c'est une première façon de faire il y a plein de façons delancer les tests en fait on peut les lancer comme je vous disais donc directement avec la commandetest et là ça va lancer tous les tests à l'intérieur de votre projet donc tous les fichiers
00:06:32 :de test que vous pourriez avoir dans toutes les applications seraient lancés donc ça peut êtrepratique si vous voulez tester l'intégralité de votre application dans ce cas ci si je relance lacommande vous allez voir que là on a une belle erreur alors ça c'est tout simplement parce qu'on
00:06:44 :n'a pas supprimé le fichier test.py donc le fichier par défaut qui est créé et donc on a un conflitentre le nom de notre module ici donc le nom du dossier et le fichier donc on va juste faire unclic droit et on va choisir delete ici pour supprimer ce fichier et si je relance la commande
00:07:00 :cette fois ci ça fonctionne donc cette commande juste si vous mettez test ici ça va vraimentlancer les tests de toute votre application et ensuite vous pouvez préciser donc on pourraitlancer tous les tests à l'intérieur d'une application spécifique donc si on souhaitait lancertous les tests à l'intérieur de l'application store donc tous les tests qui sont contenus dans
00:07:17 :le dossier test ici et bien on pourrait spécifier l'application en faisant store.test comme ceciet là si on avait donc un autre fichier donc qu'on va faire par la suite pour tester lesvues le test des modèles et les tests des vues seraient lancés les deux avec cette syntaxe donc
00:07:32 :là si je lance encore une fois on n'a qu'un seul test à l'intérieur de ce fichier donc c'est normalqu'on ait exactement la même chose mais par la suite on pourrait lancer tous les tests àl'intérieur de ce dossier et ensuite si vous voulez être encore plus précis on pourrait lancer
00:07:44 :uniquement cette classe ici donc puisque par la suite on pourrait créer plusieurs classes àl'intérieur de ce fichier et donc là encore ça va être la même logique on va cibler store.test .test-models et on va mettre le nom de la classe donc product test dans ce cas ci je valide
00:07:59 :avec entrée et là encore ça fonctionne pour vous montrer qu'on peut bien cibler une classe ou uneautre je vais dupliquer cette classe ici et on va dire product test failed et on va changer cetest ici pour qu'il ne fonctionne pas et je vais vous montrer qu'on peut lancer ce test précisément
00:08:13 :donc si je reviens dans mon terminal on va dire product test failed cette fois ci et là on abien le test qui ne fonctionne pas et si je mets product test tout simplement là on va retombersur notre test qui fonctionne donc voilà comment vous pouvez lancer vos tests comment vous pouvez
00:08:27 :les lancer à la grandeur de votre projet quand vous pouvez les lancer sur un module en particulierou même une classe particulière à l'intérieur d'un fichier de test donc le principe reste lemême à chaque fois vous pouvez cibler n'importe quoi ici on pourrait même aller cibler un test
00:08:41 :encore plus précisément en mettant ici le nom de la méthode donc en le rajoutant par la suitepuisque ce que je n'ai pas encore dit mais qui est assez important c'est qu'en fait il ya unebase de données qui va être créé à chaque fois que vous lancez les tests vous voyez ici c'est un
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.