我想传递的@pytest.mark.parametrize不是特定的值,而是固定装置。就像这样。
作告解时:
@pytest.fixture
def name1():
return 'foo'
@pytest.fixture
def name2():
return 'bar'当然,在我的test.py中,这是起作用的:
@pytest.mark.parametrize('name', ['foo', 'bar', 'baz'])
def test_name(name):
print(name)这并不意味着:
@pytest.mark.parametrize('name', [name1, name2])
def test_name(name):
print(name)我知道,在这个微不足道的情况下,我只需要创建一个名称治具并将其参数化,但在某些情况下,这是不可剥夺的。
我发现的一种方法是使用pytest_factoryboy的LazyFixture,然而,在我的测试中,我经常无法访问lazyfixtures属性。
发布于 2016-01-11 21:20:55
我会坚持在夹具参数化
在您的示例中,这相当于:
@pytest.fixture(params=['foo', 'bar'])
def name(request):
return request.param
def test_name(name):
print(name)另一种选择:
@pytest.fixture(params=[1,2])
def name(name1, name2, request):
if request.param == 1:
return name1()
elif request.param == 2:
return name2()
def test_name(name):
print(name)哪种方法最适合您,将取决于您测试的具体情况,也可能取决于您可能试图利用的预先存在的补丁。
https://stackoverflow.com/questions/33611321
复制相似问题