パラメータ化で構成されたセットから単一のテストを実行するにはどうすればよいですか?次のテスト方法があるとしましょう。
@pytest.mark.parametrize(PARAMETERS_LIST, PARAMETERS_VALUES)
def test_my_feature(self, param1, param2, param3):
"""
test doc
"""
if param1 == 'value':
assert True
else:
print 'not value'
assert False
3つのパラメーターがあり、関数をテストするために、それらの15の異なる可能な値のリストを生成します。
そのうちの1つだけを実行するにはどうすればよいですか?明白な方法を除いて-15の代わりに単一の値を与える。
文字列式に一致するテストをフィルタリングするために-k
フラグを使用することにより、 実行するテストを指定 できます。パラメータ化を使用する場合、pytestは各テストケースに次の規則で名前を付けます。
test_name ['-'分離されたテスト入力]
例えば
test_name[First_test_value-Second_test_value-N_test_value]
実行する特定のテストを選択するには、たとえば上記のすべてをまとめる必要があります。
pytest -k my_test[value_1-value_2]
私は2つの可能な解決策を考えることができます。
-k
パラメーターを使用して、特定の部分文字列式に一致するテストを実行します次のコマンドを使用して、テストを実行せずにテストの名前を確認します。
pytest --collect-only -q
実行するテストの名前を使用します。たとえば、テストの名前がtest_file_name.py::test_name[value1-value2-value3]
であるとすると、次のコマンドを使用して実行します。
pytest test_file_name.py::test_name[value1-value2-value3]
このソリューションはEnriqueSaezによって提供されており、基本的にテスト名の一部に合格することで構成されています。
pytest -k -value3]