Pytest - Остановить набор тестов после N неудачных тестов
В реальном сценарии, как только новая версия кода готова к развертыванию, она сначала развертывается в среде pre-prod / staging. Затем на нем запускается набор тестов.
Код подходит для развертывания в производственной среде только в том случае, если набор тестов проходит успешно. Если происходит сбой теста, будь то один или несколько, код не готов к работе.
Следовательно, что, если мы хотим остановить выполнение набора тестов вскоре после того, как n тестов не пройдут. Это можно сделать в pytest с помощью maxfail.
Синтаксис для остановки выполнения набора тестов вскоре после n неудачных тестов выглядит следующим образом:
pytest --maxfail = <num>
Создайте файл test_failure.py со следующим кодом.
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
При выполнении этого тестового файла все 3 теста не пройдут. Здесь мы собираемся остановить выполнение теста после одного сбоя:
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
===============================
В приведенном выше результате мы видим, что выполнение останавливается при одной ошибке.