Pytest - Arresta Test Suite dopo N test falliti

In uno scenario reale, una volta che una nuova versione del codice è pronta per la distribuzione, viene prima distribuita nell'ambiente di pre-produzione / gestione temporanea. Quindi viene eseguita una suite di test.

Il codice è qualificato per la distribuzione in produzione solo se la suite di test ha esito positivo. Se si verifica un errore del test, che sia uno o più, il codice non è pronto per la produzione.

Quindi, cosa succederebbe se volessimo interrompere l'esecuzione della suite di test subito dopo n numero di test falliti. Questo può essere fatto in pytest usando maxfail.

La sintassi per interrompere l'esecuzione della suite di test subito dopo n numero di test falliti è la seguente:

pytest --maxfail = <num>

Crea un file test_failure.py con il codice seguente.

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

Tutti e 3 i test falliranno durante l'esecuzione di questo file di test. Qui, interromperemo l'esecuzione del test dopo un errore stesso da:

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

Nel risultato sopra, possiamo vedere che l'esecuzione viene interrotta in caso di errore.