我今天坐下来更好地学习py.test并发现文档的网站已关闭(pytest.org)所以如果在那里找到这个问题的答案,我会道歉。
我想要做的是将两个灯具的输出传递给参数化,如下所示:
tbIcon.TrayPopupResolved.IsOpen = false;
但测试失败,因为不是将灯具的输出分配给参数“arg”,而是传递灯具(功能)本身。
如何以这种方式参数化各种灯具的输出?
答案 0 :(得分:1)
这个[丑陋/大规模的黑客]会不会这样做?我很感激它远非理想 - 我不知道是否有办法创建一个懒惰评估的装置,让你做你想做的事情。
import pytest
@pytest.fixture
def make_1():
return 1
@pytest.fixture
def make_2():
return 2
@pytest.fixture
def all_makes(make_1, make_2):
return (make_1, make_2)
def _test_thing(make):
# Run your test
pass
def test_main(all_makes):
for make in all_makes:
try:
_test_thing(make)
except AssertionError:
print "Failed for make {}".format(make)
raise
一个可能更好的选择可能是参数化夹具本身(如果可能) - 参考文档:https://pytest.org/latest/fixture.html#parametrizing-a-fixture
@pytest.fixture(params=[1, 2])
def make(request):
return request.param
def test_make(make):
# Run your test
pass
如果你的不同' make'灯具是超级不同的,你可以有类似的东西:
def build_make_1():
return 1
def build_make_2():
return 2
@pytest.fixture(params=[build_make_1, build_make_2])
def make(request):
return request.param()
def test_make(make):
# Run your test
pass