Mis a jour le 2025-04-14, 12:10

pytest

pytest :
  • fixture : fonction qui permet de préparer les données ou l'état avant d'exécuter la fonction de test, mais en fait, elle peut aussi faire une partie du test.
  • fonction de test : effectue le test effectif.
fixture :
  • on la fait précéder du decorator @pytest.fixture
  • une fixture peut elle même dépendre d'autres fixtures qui sont passées en argument (il peut y en avoir plusieurs).
  • tmp_path : c'est une fixture prédéfinie qui fournit un objet pathlib.Path qui est un directory temporaire.
  • fixture qui dépend d'un paramètre :
    @pytest.fixture(params = [value1, value2, value3])
    def myFixture(request):
      ... request.param # value of the parameter
        
    chaque test qui utilisera cette feature l'appelera autant de fois qu'il y a de paramètres fournis et la valeur du paramètre est accessible dans la fixture grâce à la fixture request.
Fonctions de test :
  • leur nom doit commencer par test_
  • elle prennent comme arguments des fixtures.
  • pytest exécute les fixtures passées en argument, et fourni leur résultat à la fonction de test.
  • 2 tests peuvent utiliser la même fixture et travailleront sur des données complètement indépendantes.
  • au cours d'un test, si on appelle 2 fois la même fixture, on aura la même données par la fixture ne sera en fait appelée qu'une seule fois (résultat en cache).
  • une fixture décorée avec @pytest.fixture(autouse = True) est appelée automatiquement pour tout test.
  • une fixture décorée avec @pytest.fixture(scope = 'module') n'est appelée qu'une seule fois par module (et non un fois par test du module).
  • une fixture peut avoir un yield au lieu d'un return : comme ça, le contrôle retourne dans la fixture après l'exécution du test, et la fixture peut effectuer du ménage.
Debugging :
  • stdout et stderr sont capturés.
  • on peut imprimer du debug en utilisant simplement print()
pytest -k test_myFunc : teste seulement toutes les fonctions qui ont test_myFunc comme sous-chaîne (et non pas simplement comme nom exact).

Copyright python-simple.com
programmer en python, tutoriel python, graphes en python, Aymeric Duclert