Pytest - Calendrier

Les fixtures sont des fonctions qui s'exécuteront avant chaque fonction de test à laquelle elles sont appliquées. Les fixtures sont utilisées pour fournir des données aux tests telles que les connexions à la base de données, les URL à tester et certaines sortes de données d'entrée. Par conséquent, au lieu d'exécuter le même code pour chaque test, nous pouvons attacher la fonction fixture aux tests et elle exécutera et retournera les données au test avant d'exécuter chaque test.

Une fonction est marquée comme un appareil par -

@pytest.fixture

Une fonction de test peut utiliser un appareil en mentionnant le nom de l'appareil en tant que paramètre d'entrée.

Créer un fichier test_div_by_3_6.py et ajoutez-y le code ci-dessous

import pytest

@pytest.fixture
def input_value():
   input = 39
   return input

def test_divisible_by_3(input_value):
   assert input_value % 3 == 0

def test_divisible_by_6(input_value):
   assert input_value % 6 == 0

Ici, nous avons une fonction fixture nommée input_value, qui fournit l'entrée aux tests. Pour accéder à la fonction fixture, les tests doivent mentionner le nom du fixture comme paramètre d'entrée.

Pytest pendant l'exécution du test, verra le nom de l'appareil comme paramètre d'entrée. Il exécute ensuite la fonction fixture et la valeur renvoyée est stockée dans le paramètre d'entrée, qui peut être utilisé par le test.

Exécutez le test à l'aide de la commande suivante -

pytest -k divisible -v

La commande ci-dessus générera le résultat suivant -

test_div_by_3_6.py::test_divisible_by_3 PASSED
test_div_by_3_6.py::test_divisible_by_6 FAILED
============================================== FAILURES
==============================================
________________________________________ test_divisible_by_6
_________________________________________
input_value = 39
   def test_divisible_by_6(input_value):
>  assert input_value % 6 == 0
E  assert (39 % 6) == 0
test_div_by_3_6.py:12: AssertionError
========================== 1 failed, 1 passed, 6 deselected in 0.07 seconds
==========================

Cependant, l'approche a ses propres limites. Une fonction fixe définie dans un fichier de test a une portée dans le fichier de test uniquement. Nous ne pouvons pas utiliser cet appareil dans un autre fichier de test. Pour rendre un fixture disponible pour plusieurs fichiers de test, nous devons définir la fonction fixture dans un fichier appelé conftest.py.conftest.py est expliqué dans le chapitre suivant.