2013-07-10 29 views
12

pytestを使用しています。私はディレクトリに2つのファイルを持っています。ファイルの1つには、出力を生成する長時間実行されるテストケースがあります。他のファイルには、その出力を読み込むテストケースがあります。どのようにすれば、2つのテストケースの適切な実行順序を保証できますか?テストケースを同じファイルに適切な順序で置く以外の方法がありますか?pytestのテストケースの実行順序

+3

一般に、テストケースを互いに依存させることはお勧めできません。 2つのテストケースで同じデータを使用する必要がある場合は、 'setup'セクションに追加してください。 – Brad

+0

私は知っています。どちらも好きではありませんが、今は必要です。 – Kocka

+1

セットアップセクションに追加したくないのは約15〜20分です。 – Kocka

答えて

7

一般に、well-specified hooksを使用して、pytestの基本的な動作を設定できます。

「pytest_collection_modifyitems」フックが必要な場合は、収集したテストを適切な順序で並べ替えることができます。

これは、テストがより簡単になるように指示しているようです。これは結局のところPythonです!だから私はテストを注文するためのプラグインを書いた。 docsをチェックするか、pypiからインストールしてください。今は@ pytest.mark.firstと@ pytest.mark.second、または@ pytest.mark.order#マーカーのいずれかを使用することをお勧めしますが、私はより有用なAPIについていくつか考えています。提案は

+0

ねえ。このプラグインを作成していただきありがとうございます。順序として後続の数字を抽出するように変更できますか?例:@ pytest.mark.custom1と言う場合は、1が注文でなければなりません。これは大きな助けになるでしょう! –

+0

私は試してみることができます。私はv0.2が任意のマーカーの代わりに "順序"マーカーでこの動作をしていると思います。 pytest-orderingのgithubページの機能要求としてこれを書けますか? https://github.com/ftobia/pytest-ordering –

+0

フックリンクはhttp://pytest.org/latest/writing_plugins.html#well-specified-hooksにアクセスする必要があります –

1

たぶん、あなたは簡単にテストの依存関係を設定することができdependency pytestプラグインを使用して検討することができます:)歓迎:

@pytest.mark.dependency() 
def test_long(): 
    pass 

@pytest.mark.dependency(depends=['test_long']) 
def test_short(): 
    pass 

この方法test_shortのみtest_longが成功であれば実行し、実行順序を強制します同じように。

+0

上記は私のために順序の配列決定のために働かない。例えば、:あなたが注文を裏返す場合。私は長い間、短いことに頼ってきました。その場合、longはスキップされます。 – peaxol

3

また、お客様の要件を満たすと思われるプラグインpytest-orderingがあります。

+0

Frank T.の答えはすでにこのプラグインを記述しており、この回答の3年前に投稿されました。 – Ave

+0

ええ、彼はその名前は言及していませんでした。だからこそ私は完全にその点を逃してしまったのです。 –

関連する問題