2017-06-28 42 views
0

次のようにテストケースを記述しています。pytestクラス内のテストの実行順序

# content of test_class.py 
class TestClass(object): 
    def test_one(self): 
     x = "this" 
     assert 'h' in x 

    def test_two(self): 
     x = "hello" 
     assert hasattr(x, 'check') 

test_twoがtest_oneに依存するため、実行の順序が重要であり、テストの実行順序クラスのあなたのグループテストを強制する規則は何ですか?

+0

https://pypi.python.org/pypi/pytest-ordering/を試しましたか? –

+0

この場合、実行はアルファベット順に行われます。最も簡単な方法は、テスト名をそれに応じて順序付けることです。 –

答えて

0

デフォルトでは、テストはクラス/モジュールで定義された順序で実行されます。あなたの場合:

test_class.py::TestClass::test_one PASSED 
test_class.py::TestClass::test_two PASSED 

一般に、お互いに依存するテストを書くことは悪い習慣であると考えてください。後で実行するテストが並行して実行される場合は、flakinessになります。または、ランダムテストの実行のためのプラグインをインストールした場合などです。 https://pypi.python.org/pypi/pytest-randomly、またはプロジェクトを離れると、他の誰かが青から失敗し始めるテストをデバッグする必要があります。

2つのテストを1つに組み合わせることをおすすめします。重要なことは、いくつかのテストシナリオがあることです。 2つのテストがある場合は重要ですか、まだコードに同じ信頼性がある場合は1ですか?

0

pytest_collection_modifyitemsフックを使用して注文を変更することができます。