Pytest - Arrêter la suite de tests après N échecs de test

Dans un scénario réel, une fois qu'une nouvelle version du code est prête à être déployée, elle est d'abord déployée dans un environnement de pré-production / préparation. Ensuite, une suite de tests s'exécute dessus.

Le code est qualifié pour un déploiement en production uniquement si la suite de tests réussit. En cas d'échec du test, qu'il s'agisse d'un ou plusieurs, le code n'est pas prêt pour la production.

Par conséquent, que se passe-t-il si nous voulons arrêter l'exécution de la suite de tests peu de temps après l'échec de n nombre de tests. Cela peut être fait dans pytest en utilisant maxfail.

La syntaxe pour arrêter l'exécution de la suite de tests peu après n nombre d'échecs de test est la suivante -

pytest --maxfail = <num>

Créez un fichier test_failure.py avec le code suivant.

import pytest
import math

def test_sqrt_failure():
   num = 25
   assert math.sqrt(num) == 6

def test_square_failure():
   num = 7
   assert 7*7 == 40

def test_equality_failure():
   assert 10 == 11

Tous les 3 tests échoueront lors de l'exécution de ce fichier de test. Ici, nous allons arrêter l'exécution du test après un échec lui-même en -

pytest test_failure.py -v --maxfail = 1
test_failure.py::test_sqrt_failure FAILED
=================================== FAILURES
=================================== _______________________________________
test_sqrt_failure __________________________________________
   def test_sqrt_failure():
   num = 25
>  assert math.sqrt(num) == 6
E  assert 5.0 == 6
E  + where 5.0 = <built-in function sqrt>(25)
E  + where <built-in function sqrt>= math.sqrt
test_failure.py:6: AssertionError
=============================== 1 failed in 0.04 seconds
===============================

Dans le résultat ci-dessus, nous pouvons voir que l'exécution est arrêtée sur un échec.