Pytest fixture返回函数对象而非命令行输入值的问题求助
问题解决方法
核心问题是你没有通过pytest的依赖注入机制使用fixture,直接引用fixture函数名只会拿到函数对象本身,而非它返回的命令行参数值。
修复步骤
修改测试代码,将fixture作为测试函数的参数传入,pytest会自动执行fixture并把返回值注入到参数中:
def test_names(get_name): print(get_name) assert get_name == 'mark' def test_pwd(get_pwd): print(get_pwd) assert get_pwd == 'p'
原理说明
- pytest的fixture通过参数注入工作:当测试函数的参数名与fixture函数名一致时,pytest会自动调用该fixture,并将其返回值传递给测试函数的参数。
- 你之前直接写
get_name,只是引用了这个函数对象本身,并没有触发fixture的执行和值的返回。
验证方式
重新执行命令:
pytest -s test.py --n=mark --pwd=p
此时print(get_name)会输出mark,print(get_pwd)输出p,断言会正常通过。
内容的提问来源于stack exchange,提问作者coder_g
相关产品推荐
相关产品推荐

