背景如下:
pytest 有一个数据驱动的装饰器
@user1ize("test_input,expected", [
("3+5", 8),
pytest.param("6*9", 42, marks=pytest.mark.xfail),
])
def test_eval(test_input, expected):
assert eval(test_input) == expected
上面代码中我想把这一段 pytest.param("6*9", 42, marks=pytest.mark.xfail),我想动态生成。
大概思路就是 用 python 的 importlib 包,反射导入相关模块,
import importlib
mark_pytest = importlib.import_module('_pytest.mark')
pytest = importlib.import_module('pytest')
param_pytest_xfail_list = []
param_list = [['a', 'b'], ['c', 'd']] # 这个是我想判断失败的参数,想分别替换下面的aaa,bbb
for item in param_list:
item
param_pytest_xfail_list.append(mark_pytest.param(aaa, bbb, marks=pytest.mark.xfail))
# 我怎么才能把参数aaa,bbb 替换成item,其中param方法的定义为
# def param(*value,**kw):
# return ParameterSet.param(*values, **kw)
这个问题,卡了大半天了。问下论坛的各位大佬。有这样玩过吗。
我也想过改源码,param 方法改成能接受 list 形式的,但是一改就各种报错,
所以小弟我就来求助了~~~