我有以下问题,我需要使用pytest执行一系列测试,每个测试基本相同,唯一的区别是参数。
例如我必须执行:
./command_line arg1
./command_line arg2
...
./command_line argN
然后我需要验证可执行文件命令总是返回预期的给定结果。
我知道this,所以我想问一个关于哪个是我问题的最佳方法的建议。
我提前谢谢你了!
编辑: 最后,我在StackOverflow中找到了question,建议我查看this page,我觉得这个问题非常有用。
答案 0 :(得分:2)
我通常使用pytest.mark.parametrize
执行此操作,它的工作原理如下:
import pytest
@pytest.mark.parametrize('arg, result', [
('arg1', 'result1'),
('arg2', 'result2'),
('arg3', 'result3'),
('argN', 'resultN'),
])
def test_cmd0(arg, result):
out = subprocess.check_output(['cmd', arg])
assert out.rstrip() == out
其中arg1
,... argN
- 您的参数,以及result1
,..,resultN
您的预期结果。
在上面的示例中,我展示了如何启动外部命令并期望每次运行都有不同的结果。如果预期结果相同,您可以在参数化中跳过result
,然后执行:
assert out.rstrip() == 'expected result'