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

如何用pytest断言类对象?解决内存地址变化的断言问题

正确实现类对象的断言与创建验证

当前测试的问题

  1. 未调用目标函数:parameter = function_name 只是引用了函数本身,没有执行函数逻辑,应改为 parameter = function_name()
  2. 硬编码内存地址不可靠:程序每次运行时,对象的内存地址都会随机分配,断言字符串匹配必然失败

正确的测试方案

1. 先修正原代码的错误

原other_class的__init__方法未接收参数,但调用时传入了file,会触发参数不匹配错误,先修正类定义:

class other_class():
    def __init__(self, file):  # 添加file参数
        self.x = file
        self.y = {}
    # 其他方法...

2. 编写可靠的测试代码

测试应聚焦对象类型是否正确和属性状态是否符合预期,而非底层内存地址:

def test_function_name():
    # 执行目标函数,获取返回的对象
    parameter = function_name()
    
    # 验证对象是否成功创建(即返回值是other_class的实例)
    assert isinstance(parameter, other_class), "未成功创建other_class实例"
    
    # 验证对象的核心属性是否符合预期
    assert parameter.x == "c:/desktop/test.txt", "实例的文件路径属性错误"
    
    # 可选:验证初始属性的默认值
    assert parameter.y == {}, "实例的y属性初始值不符合预期"

额外说明

  • 若仅需验证对象是否创建,仅用isinstance断言即可满足需求
  • 永远不要依赖包含内存地址的对象字符串表示做断言,这类信息完全不稳定
  • 测试的核心是验证程序的行为和状态,而非底层实现细节

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 10:02:10