pytest
を使用していますが、テストの実行は例外が発生するまで実行されることになっています。テストで例外が発生しない場合は、残りの時間またはSIGINT/SIGTERMを送信するまで実行を継続する必要があります。
コマンドラインでこれを行うのではなく、pytest
に最初の失敗で実行を停止するようにプログラムで指示する方法はありますか?
pytest -x # stop after first failure
pytest --maxfail=2 # stop after two failures
http://pytest.org/en/latest/usage.html のドキュメントを参照してください
Pytest.iniファイルで addopts を使用できます。コマンドラインスイッチを呼び出す必要はありません。
# content of pytest.ini
[pytest]
addopts = --maxfail=2 # exit after 2 failures
テストを実行する前に、環境変数「PYTEST_ADDOPTS」を設定することもできます。
pythonコードを使用して最初の失敗後に終了する場合は、次のコードを使用できます。
import pytest
@pytest.fixture(scope='function', autouse=True)
def exit_pytest_first_failure():
if pytest.TestReport.outcome == 'failed':
pytest.exit('Exiting pytest')
このコードは、すべてのテストにexit_pytest_first_failureフィクスチャを適用し、最初の失敗の場合にpytestを終了します。
pytestにはオプション-x
または--exitfirst
があり、最初のエラーまたは失敗したテストでテストの実行を即座に停止します。
pytestにはオプション--max-fail=num
もあり、num
はテストの実行を停止するために必要なエラーまたは失敗の数を示します。
pytest -x # if 1 error or a test fails, test execution stops
pytest --exitfirst # equivalent to previous command
pytest --maxfail=2 # if 2 errors or failing tests, test execution stops