Pytest-stop-test-suite-after-n-test-failures

提供:Dev Guides
移動先:案内検索

Pytest-N回のテスト失敗後にテストスイートを停止する

実際のシナリオでは、コードの新しいバージョンを展開する準備ができたら、最初にプリプロダクション/ステージング環境に展開します。 次に、テストスイートが実行されます。

コードは、テストスイートに合格した場合にのみ、運用環境への展開に適しています。 テストが失敗した場合、それが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つの障害で実行が停止していることがわかります。