Pytest - Pare o conjunto de testes após N falhas de teste

Em um cenário real, uma vez que uma nova versão do código está pronta para ser implantada, ela é primeiro implantada no ambiente de pré-produção / preparação. Em seguida, um conjunto de testes é executado nele.

O código é qualificado para implantação na produção apenas se o conjunto de testes for aprovado. Se houver falha no teste, seja um ou vários, o código não está pronto para produção.

Portanto, e se quisermos interromper a execução do conjunto de testes logo após n número de falhas de teste. Isso pode ser feito em pytest usando maxfail.

A sintaxe para interromper a execução do conjunto de testes logo após n número de falhas de teste é a seguinte -

pytest --maxfail = <num>

Crie um arquivo test_failure.py com o código a seguir.

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

Todos os 3 testes falharão ao executar este arquivo de teste. Aqui, vamos parar a execução do teste após uma falha por -

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

No resultado acima, podemos ver que a execução foi interrompida em uma falha.