完全搞懂这个问题,得先知道装饰器的用法,再看 fixture 的源码。
大概的原因是 change_id_to_name 被 pytest.fixture 修饰后不能当一个普通方法使用了,也不能接受一个非 fixture 的参数。
confest.py:
@pytest.fixture(scope='function', params=yaml.safe_load(****)) # yaml.safe_load得到的应当是一个type_id的列表
def change_id_to_name(request):
return hand_other_param.change****(request.param) # request.param看成是固定写法,就是取出来的type_id
用例:
def test_search_type(self, change_id_to_name)
print(change_id_to_name)
这样写就自动完成了参数化,不需要再来一次 pytest.mark.parametrize