2016-04-06 5 views
31

ファイルから実行するpytestテストを選択する方法はありますか? pytestと異なるディレクトリから、テスト名には一般的なパターンを有していないファイルから実行するpytestテストを指定する方法はありますか?

tests_directory/foo.py::test_001 
tests_directory/bar.py::test_some_other_test 

それとも 複数のテストを選択する方法があり、: 例えば、実行されるテストのリストを含むファイルfoo.txtのは?

py.test -k <pattern>は単一のパターンを許可します。

1つのオプションは、各テストに対してpytest.markを設定することですが、私の要件は、異なるファイルから異なるテストの組み合わせを実行することです。

パターンごとに複数のパターンとテストファイル名を指定する方法はありますか? ファイル内に正確なテストパスを指定し、そのファイルをpytestの入力としてフィードする方法はありますか? または この目的のために利用できるフック関数はありますか?

答えて

52

あなたは異なるパターンでテストケースを実行するために-kオプションを使用することができます。これは、テストケースの残りの部分を選択解除名test_001test_some_other_testでテストケースを実行します

py.test tests_directory/foo.py tests_directory/bar.py -k 'test_001 or test_some_other_test' 

注:これは、test_001またはtest_some_other_testで始まるすべてのテストケースを選択します。たとえば、テストケースtest_case0012が選択されているとします。たぶん、あなたはテストがしたいと指定し、pytestコアに戻します.txt.yaml Oファイルの内容を解析することができpytest_collect_file()フックを使用して

+1

感謝。しかし、foo.pyとbar.py(test_001と言う)に同じ名前のテストがあると、両方から実行が終了します。 – Sharad

+1

はい、それはパターンに一致するものは、私がノート – supamaze

+0

で述べたように実行されますが、それは私のための問題です。どのファイルからどのテストを実行するかを選択したいと思います。 – Sharad

0

良い例がpytest documentationに示されています。私はあなたが探していると思う。

-3

それぞれ定義されたテストクラス内の特定のテストを実行したり、特定のテストクラスを実行するには、以下の簡単な手順に従ってください

$pytest -v tests_directory/foo.py TestClass.test_method_001 

$pytest -v tests_directory/foo.py TestClass 
+0

私のためには機能しません...「ファイルが見つかりません」というメッセージが表示されます – Stefan

+0

@Stefanさらに多くの出力と使用しているコマンドを共有できますか? – Viswesn

+2

問題は、ファイル名とクラス名の間のスペースです。他の回答の指示に従って、セパレータとして '::'を使います。 – Stefan

関連する問題