我正在尝试对测试进行参数化。 在返回列表的设置方法中,我正在调用固定装置(app_config)。
现在,我想调用安装程序,以便该列表可以用作测试内的参数值。
我遇到的问题是,在参数装饰器中调用安装程序时,我无法通过app_config固定装置。
def setup(app_config):
member = app_config.membership
output = app_config.plan_data
ls = list(zip(member, output))
return ls
@pytest.mark.parametrize('member, output', setup(app_config))
def test_concentric(app_config, member, output):
....
....
是否有一种优雅的方法可以在参数装饰器中传递设置方法,或者通过其他任何方法来实现这一目标?
答案 0 :(得分:0)
不幸的是,从pytest版本4开始,已经无法像常规函数一样调用固定装置了。
在您的情况下,我建议您不使用灯具,然后切换到正常功能。 例如,它可能看起来像这样:
import pytest
def app_config():
membership = ['a', 'b', 'c']
plan_data = [1, 2, 3]
return {'membership': membership,
'plan_data': plan_data}
def setup_func(config_func):
data = config_func()
member = data['membership']
output = data['plan_data']
ls = list(zip(member, output))
return ls
@pytest.mark.parametrize('member, output', setup_func(app_config))
def test_concentric(member, output):
print(member, output)
....
NB!避免使用 setup()函数/夹具名称,因为它会与pytest.runner的内部结构冲突。