68

私はパイテストを使用しています。ディレクトリに 2 つのファイルがあります。ファイルの 1 つに、出力を生成する長期実行テスト ケースがあります。他のファイルには、その出力を読み取るテスト ケースがあります。2 つのテスト ケースの適切な実行順序を確認するにはどうすればよいですか? テスト ケースを同じファイルに適切な順序で配置する以外に方法はありますか?

4

11 に答える 11

73

一般に、適切に指定されたフックを使用して、基本的に pytest の任意の部分の動作を構成できます。

あなたの場合、収集したテストをその場で並べ替えることができる「pytest_collection_modifyitems」フックが必要です。

そうは言っても、テストを注文する方が簡単なはずです-これは結局のところPythonです! そこで、テストを注文するためのプラグイン「pytest-ordering」を作成しました。ドキュメントを確認するか、 pypiからインストールしてください。現時点では、@pytest.mark.first@pytest.mark.second、または@pytest.mark.order#マーカーの 1 つを使用することをお勧めしますが、より便利な API についていくつかのアイデアがあります。提案を歓迎します:)

編集: pytest-ordering は現時点では放棄されているようです。pytest-order (作者による元のプロジェクトのフォーク) も確認できます。

Edit2 : pytest の順序では、1 つのマーカー ( order) のみがサポートされており、前述の例では@pytest.mark.order("first")@pytest.mark.order("second")、または@pytest.mark.order(#)( # は任意の数字) と読み取られます。

于 2014-03-18T01:24:22.513 に答える
6

要件を満たすと思われるプラグインpytest-orderingもあります。

于 2017-11-16T19:53:52.467 に答える
0

pytest-randomlyプラグインで利用可能な「--randomly- dont-reorganize」オプションまたは「-p no:randomly」を使用すると、モジュールで言及したのと同じ順序でテストが実行されます。

モジュール:

import pytest

def test_three():
    assert True

def test_four():
    assert True

def test_two():
    assert True

def test_one():
    assert True

実行:

(tmp.w95BqE188N) rkalaiselvan@dev-rkalaiselvan:~/$ py.test --randomly-dont-reorganize test_dumm.py
======================================================================== test session starts ========================================================================
platform linux2 -- Python 2.7.12, pytest-3.10.1, py-1.5.4, pluggy-0.7.1 -- /tmp/tmp.w95BqE188N/bin/python2
cachedir: .pytest_cache
Using --randomly-seed=1566829391
rootdir: /home/rkalaiselvan, inifile: pytest.ini
plugins: randomly-1.2.3, timeout-1.3.1, cov-2.6.0, mock-1.10.0, ordering-0.6
collected 4 items

test_dumm.py::test_three PASSED
test_dumm.py::test_four PASSED
test_dumm.py::test_two PASSED
test_dumm.py::test_one PASSED

(tmp.w95BqE188N) rkalaiselvan@dev-rkalaiselvan:~/$ py.test -p no:randomly test_dumm.py
======================================================================== test session starts ========================================================================
platform linux2 -- Python 2.7.12, pytest-3.10.1, py-1.5.4, pluggy-0.7.1 -- /tmp/tmp.w95BqE188N/bin/python2
cachedir: .pytest_cache
Using --randomly-seed=1566829391
rootdir: /home/rkalaiselvan, inifile: pytest.ini
plugins: randomly-1.2.3, timeout-1.3.1, cov-2.6.0, mock-1.10.0, ordering-0.6
collected 4 items

test_dumm.py::test_three PASSED
test_dumm.py::test_four PASSED
test_dumm.py::test_two PASSED
test_dumm.py::test_one PASSED
于 2019-08-26T14:30:13.693 に答える