是否有办法指定pytest
的pytest.mark.parametrize()
参数的可调用参数,以便仅在选择运行测试时动态生成参数?如何使用callable作为pytest参数ize()参数?
我有一些昂贵的操作要执行以生成参数,我只想执行它们,如果测试被选中运行。
例如,
import pytest
def my_callable():
# do expensive operations here
return [(1, 2), (3, 6)]
# I want my_callable to be called only if test_something
# has been selected to be run
@pytest.mark.parametrize("my_parm_1,my_parm_2", my_callable)
def test_something(my_parm_1, my_parm_2):
assert my_parm_1 * 2 == my_parm_2
这一切似乎都是pytest方面的一个小缺陷。也许值得考虑用pytest提交一个bug,以便延迟评估参数到装饰测试运行的时刻(或者添加一个装饰参数来实现这一点)... – sophros