Pytest - Stoppen Sie die Testsuite nach N Testfehlern
In einem realen Szenario wird eine neue Version des Codes, sobald sie zur Bereitstellung bereit ist, zuerst in einer Pre-Prod / Staging-Umgebung bereitgestellt. Dann läuft eine Testsuite darauf.
Der Code kann nur dann für die Produktion bereitgestellt werden, wenn die Testsuite erfolgreich ist. Wenn ein Testfehler auftritt, egal ob einer oder mehrere, ist der Code nicht produktionsbereit.
Was ist daher, wenn wir die Ausführung der Testsuite kurz nach n fehlgeschlagenen Tests beenden möchten? Dies kann im Pytest mit maxfail durchgeführt werden.
Die Syntax zum Stoppen der Ausführung der Testsuite kurz nach n fehlgeschlagenen Tests lautet wie folgt:
pytest --maxfail = <num>
Erstellen Sie eine Datei test_failure.py mit dem folgenden Code.
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
Alle 3 Tests schlagen beim Ausführen dieser Testdatei fehl. Hier stoppen wir die Ausführung des Tests nach einem Fehler selbst durch -
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
===============================
Im obigen Ergebnis können wir sehen, dass die Ausführung bei einem Fehler gestoppt wird.