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

如何mock列表中的对象,正确获取signature_id属性值用于单元测试

问题根因

你之前的写法错误将signatures识别为可调用方法,额外加了.return_value配置,而实际业务代码中signature_request.signatures是直接读取的属性,返回列表后直接通过索引[0]取值,不需要调用。

正确解决方案

方案1:直接对属性赋值(适用90%以上普通场景)

直接给mock返回对象的signatures属性赋值为带signature_id属性的Mock对象列表即可:

# 写法1 分步构造
mock_signature_item = Mock()
mock_signature_item.signature_id = "你要mock的signature_id值"
send_request_mocked.return_value.signatures = [mock_signature_item]

# 写法2 一行构造
send_request_mocked.return_value.signatures = [Mock(signature_id="你要mock的signature_id值")]

方案2:PropertyMock适配(仅适用于signatures是被@property装饰的类属性场景)

如果原对象的signatures是属性装饰器定义的计算属性,需要用PropertyMock配置:

from unittest.mock import PropertyMock

type(send_request_mocked.return_value).signatures = PropertyMock(
    return_value=[Mock(signature_id="你要mock的signature_id值")]
)

有效性验证

可以加一行测试代码快速验证mock是否生效:

test_instance = send_request_mocked()
assert test_instance.signatures[0].signature_id == "你设置的mock值"

如果断言不报错则证明mock配置正确。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 17:18:02