Quand on Ă©crit des tests, on est souvent amenĂ©s Ă crĂ©er des donnĂ©es temporaires, le problĂšme c'est que si j'ai 10 tests portant sur le mĂȘme objet, je dois crĂ©er 10x le mĂȘme objet
Prenons ce code :
On peut remarquer deux choses ici :
1. L'appel à Database() (une base de données quelconque) au début de chaque test
2. La crĂ©ation du mĂȘme utilisateur dans deux tests diffĂ©rents
Bref on répÚte du code inutilement. Heureusement, il existe une fonction pytest qui va beaucoup nous aider : les fixtures !
Il s'agit d'une fonction dans pytest permettant de créer des objets temporaires et réutilisables par plusieurs tests !
Créons deux fixtures pour les problÚmes soulevés précédemment :
Ainsi, notre premier test test_add_user() devient :
C'est plus clair non ? đ A savoir que Pytest injecte automatiquement dans les fonctions de tests les fixtures ajoutĂ©es en input d'une fonction, on appelle cela l'injection de dĂ©pendances, c'est pourquoi nous n'avons pas besoin d'ajouter un appel Ă la fixture db()
Par ailleurs, si une fixture dépend d'une autre fixture, pytest gÚre directement ces dépendances :
En indiquant simplement db_with_user dans l'import du test, pytest va donc :
1. Créer la base de données grùce à la fixture db()
2. Utiliser la fixture db_with_user() pour ajouter un utilisateur
3. Exécuter le tout dans le test test_add_post()
VoilĂ , j'espĂšre que tu as mieux saisi l'intĂ©rĂȘt des fixtures et que tu les utiliseras dans ton prochain projet ! đ
Merci d'avoir lu !