Pytest - Detener Test Suite después de N pruebas fallidas

En un escenario real, una vez que una nueva versión del código está lista para implementarse, primero se implementa en un entorno de preproducción / ensayo. Luego, se ejecuta un conjunto de pruebas.

El código está calificado para su implementación en producción solo si pasa el conjunto de pruebas. Si hay una falla en la prueba, ya sea una o varias, el código no está listo para producción.

Por lo tanto, ¿qué sucede si queremos detener la ejecución de la suite de pruebas poco después de que n números de pruebas fallen? Esto se puede hacer en pytest usando maxfail.

La sintaxis para detener la ejecución de la suite de pruebas poco después de que n número de pruebas fallan es la siguiente:

pytest --maxfail = <num>

Cree un archivo test_failure.py con el siguiente código.

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

Las 3 pruebas fallarán al ejecutar este archivo de prueba. Aquí, vamos a detener la ejecución de la prueba después de una falla en sí misma:

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
===============================

En el resultado anterior, podemos ver que la ejecución se detiene en una falla.