Pytest-N回のテスト失敗後にTestSuiteを停止します
実際のシナリオでは、コードの新しいバージョンをデプロイする準備ができたら、最初に製品前/ステージング環境にデプロイします。次に、テストスイートが実行されます。
コードは、テストスイートに合格した場合にのみ、本番環境にデプロイする資格があります。テストが失敗した場合、それが1つであろうと多数であろうと、コードは本番環境に対応していません。
したがって、n回のテストが失敗した直後にテストスイートの実行を停止したい場合はどうでしょうか。これは、maxfailを使用してpytestで実行できます。
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つのテストすべてが失敗します。ここでは、1回失敗した後、テストの実行を停止します。
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
===============================
上記の結果では、1回の失敗で実行が停止していることがわかります。