测试时如何重建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
相关产品推荐
相关产品推荐

