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

Python pytest测试无参方法报参数错误加@staticmethod不生效如何解决

报错原因与解决方案

你遇到的TypeError: read_products() takes 0 positional arguments but 1 was given报错,核心是函数调用时传入的参数数量,和函数定义要求的参数数量不匹配,对应你尝试过的操作,按以下步骤排查即可:

步骤1:确认read_products的定义场景

  • 如果read_products是定义在类中的普通实例方法:
    实例方法默认第一个参数为self,调用时必须通过类的实例对象调用,不能直接用类名调用:
    # 错误示例
    类名.read_products()
    # 正确示例
    实例对象 = 类名()
    实例对象.read_products()
    
    如果你不需要用到实例属性,给方法加@staticmethod装饰器后,既可以用类名调用,也可以用实例调用,无需传任何参数。
  • 如果read_products是全局独立函数:
    直接检查所有调用该函数的代码位置,确认调用时括号内没有传入多余的参数,比如不要误写成read_products(参数)的格式。

步骤2:排查之前操作无效的原因

  • 加self参数后仍报错:你大概率还是直接用类名调用了方法,没有传入实例对象,符合报错的参数不匹配逻辑。
  • 加@staticmethod后仍报错:要么是装饰器加错了位置,要么是调用时仍多传了参数,要么是pytest加载了旧版本代码,删除pytest缓存目录后重新运行测试即可。

内容的提问来源于stack exchange,提问作者João Silva

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 18:06:07