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

调用__call__时提示缺少位置参数'context',如何排查?

问题分析与修复:TypeError: call() missing required 'context'参数

报错根源

直接原因就是测试代码的调用没有传入新增的context参数:
Subparser类的__call__方法近期新增了第三个必填参数context,但测试里的调用mts.get_subparser()(mts, b'')只传了obj(mts)和data(b'')两个参数,完全没提供context,这才触发了参数缺失的TypeError。

对比业务代码里的正确调用:在SubparserMixin的on_packet方法中,调用解析逻辑时是明确传递了self.context的(也就是PacketContext实例),说明业务逻辑的调用是符合新参数要求的,只有测试代码没跟上修改。

修复方案

有两种简单的修复方式:

  • 直接复用测试对象的context属性(如果mts是SubparserMixin的实例):
    # 补充传入mts的context参数
    mts.get_subparser()(mts, b'', mts.context)
    
  • 如果测试需要自定义上下文,可以手动创建PacketContext实例传入:
    from your_module import PacketContext
    # 按需设置capture_tstamp或其他属性
    test_context = PacketContext(capture_tstamp=1699999999)
    mts.get_subparser()(mts, b'', test_context)
    

补充说明

Subparser类__call__方法的参数添加方式是合理的——业务逻辑中确实需要把PacketContext传递给parse_er_data方法,用来携带包捕获时间戳这类上下文信息,所以问题不在方法定义,而是测试调用未同步更新。

内容的提问来源于stack exchange,提问作者Patrick_Chong

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 10:27:13