如何从配置了parametrize的集合中运行单个测试? 假设我有以下测试方法:
@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个不同可能值的列表,以测试函数。
我怎样才能只运行其中一个?除了显而易见的方式 - 给出单个值而不是15。
答案 0 :(得分:10)
您可以specify the tests to run使用-k
标志来过滤与字符串表达式匹配的测试。使用parametrize时,pytest使用以下约定命名每个测试用例:
test_name [' - '分开的测试输入]
例如
test_name[First_test_value-Second_test_value-N_test_value]
选择要运行的特定测试是将所有上述内容放在一起的问题,例如
pytest -k my_test[value_1-value_2]
答案 1 :(得分:0)
我可以想到两种可能的解决方案。
-k
参数运行与给定子字符串表达式匹配的测试使用以下命令查看测试的名称而不运行它们:
pytest --collect-only -q
使用您要运行的测试的名称,假设该测试名为test_file_name.py::test_name[value1-value2-value3]
,因此请使用以下命令来运行它:
pytest test_file_name.py::test_name[value1-value2-value3]
此解决方案由Enrique Saez提供,它基本上包括传递测试名称的一部分:
pytest -k -value3]