2017-12-09 16 views
2

私は現在、パラメータ化されたテスト(> 1M)の大きなスイートを実行しているプロジェクトで作業しています。テストは無作為に生成されたユースケースであり、この大規模なテスト空間では、実行ごとに特定のエッジケースが〜1〜2%で失敗することが予想されます。失敗率の引数を渡すことができる、またはこの動作を処理するPytestの実装はありますか?PyTest:許容失敗率

+0

残念@georgexsh。私は一週間ずっと旅をしています。あなたが提案した修正プログラムはうまくいくようですが、確かに良い実装です。私は来週、より多くのフィードバックを得る予定です。 –

+0

フィードバックはありますか? – georgexsh

答えて

4

pytestコマンドの終了ステータスを変更したいと思いますが、pytest_sessionfinishという名前のnonpublic hookがあります。 、ここで

$ pytest --tb=no -q tests.py 
F..                      [100%] 
1 failed, 2 passed in 0.06 seconds 

故障率が1/3 == 33.3%です:

def test_spam(): 
    assert 0 

def test_ham(): 
    pass 

def test_eggs(): 
    pass 

とconftest.pyでフック:

import pytest, _pytest 

ACCEPTABLE_FAILURE_RATE = 50 

@pytest.hookimpl() 
def pytest_sessionfinish(session, exitstatus): 
    if exitstatus != _pytest.main.EXIT_TESTSFAILED: 
     return 
    failure_rate = (100.0 * session.testsfailed)/session.testscollected 
    if failure_rate <= ACCEPTABLE_FAILURE_RATE: 
     session.exitstatus = 0 

が、その後pytestを呼び出す

では、次のテストを持って考えます50%未満:

$ echo $? 
0 

終了ステータスpytestは0です。

関連する問題