接口测试 请问下,pytest 的 fixture 的函数 return 之后,打印出来提示 'str' object is not callable

王加 · 2021年03月11日 · 最后由 王加 回复于 2021年03月11日 · 2803 次阅读



麻烦各位帮我看看

共收到 2 条回复 时间 点赞

完全搞懂这个问题,得先知道装饰器的用法,再看 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

MarvinWu 回复

感觉也是这样的,之所以不用上面的方法,是因为 test_search_type 和 change_id_to_name 这里面都需要用到 yaml 文件里的参数。最后直接把上面那个当成了一个普通的方法然后在测试用例里面调了,感谢回复

王加 关闭了讨论 03月11日 21:21
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册