背景如下:
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 形式的,但是一改就各种报错,
所以小弟我就来求助了~~~


↙↙↙阅读原文可查看相关链接,并与作者交流