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

测试时如何重建MessageContext类对象?调试打印仍无法实现

解决MessageContext对象打印仅显示内存地址的问题

1. 重写__repr__或__str__方法

Python默认打印对象时仅输出内存地址,你需要在MessageContext类中自定义这两个魔术方法,指定输出内容:

class MessageContext:
    def __init__(self, param1, param2):
        self.param1 = param1
        self.param2 = param2

    # __repr__用于交互式环境/调试时的精准输出
    def __repr__(self):
        return f"MessageContext(param1={self.param1!r}, param2={self.param2!r})"
    
    # __str__用于print()时的友好可读性输出
    def __str__(self):
        return f"消息上下文: param1={self.param1}, param2={self.param2}"

修改后打印对象,就能看到属性的具体值而非内存地址。

2. 验证测试场景中对象的初始化逻辑

在断点处手动检查对象属性是否被正确赋值:

# 断点执行代码
print(context.param1)  # 打印单个属性
print(context.__dict__)  # 打印对象所有属性与对应值

如果__dict__为空,说明parsers函数没有正确初始化MessageContext对象,需要排查函数内的参数传递逻辑。

3. 排查PacketAdapter的依赖传递问题

若MessageContext的初始化依赖PacketAdapter,确认parsers函数是否从PacketAdapter实例中正确提取了所需参数,再传入MessageContext的构造方法。比如检查是否存在参数遗漏、类型不匹配的情况。

4. 用dir()查看对象完整属性

在断点处执行dir(context),可以列出对象的所有属性和方法,确认预期的属性是否存在,排除属性未被正确绑定的问题。


内容的提问来源于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.03 23:35:29