python-3.x 如何在pytest-bdd中使用参数化夹具

jdzmm42g  于 2023-06-25  发布在  Python
关注(0)|答案(2)|浏览(170)

我正在尝试在我的pytest-bdd框架中使用参数化的fixture。正常夹具工作正常。但是如果我传递参数,它会给出下面的错误The requested fixture has no parameter defined for test:
下面是我的代码(示例)。这里的正确用法是什么?

@pytest.fixture(params=[1,2])
def ba_data(request):
    print("this is fixture")
    return request.param

@given(parsers.cfparse('Collect testdata'))
def required_data(ba_data):
    print(ba_data)
s3fp2yjn

s3fp2yjn1#

对于www.example.com中定义的pytest_generate_tests生成的fixture,它也不起作用conftest.py

def pytest_generate_tests(metafunc):
   if "numberinput" in metafunc.fixturenames:
      metafunc.parametrize("numberinput", [1, 2, 3])

猜测pytest-bdd未正确支持夹具

kqqjbcuj

kqqjbcuj2#

为了在pytest-bdd中使用参数化fixture,您必须使用@scenario("yourfeaturename.feature","your scenario name")声明场景
如果将scenario函数用作

scenarios("yourfeaturename.feature")

你必须将fixture传递给@scenario下面的函数

@scenario("yourfeaturename.feature","your scenario name")
def test_mytest(ba_data):    
   pass

@pytest.fixture(params=[1,2])
def ba_data(request):
   print("this is fixture")
   return request.param

@given(parsers.cfparse('Collect testdata'))
def required_data(ba_data):
   print(ba_data)

相关问题