You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 20:14:58