gpt4 book ai didi

python - 如何使用 unittest.mock.MagicMock 或 Mock 类模拟 `name` 属性?

转载 作者:行者123 更新时间:2023-12-04 01:21:39 24 4
gpt4 key购买 nike

我正在尝试使用模拟名称创建 MagicMock,它似乎不起作用,但适用于其他属性:

from unittest.mock import MagicMock

# Works
assert MagicMock(foo='bar').foo == 'bar'

# Don't work
assert MagicMock(name='bar').name == 'bar'

print(MagicMock(name='bar').name)
<MagicMock name=\'bar.name\' id=\'140031146167376\'>

如何使用 MagicMock 模拟名称属性?

最佳答案

在创建模拟对象期间不能模拟 name 属性,因为它具有特殊含义:

name: If the mock has a name then it will be used in the repr of the mock. This can be useful for debugging. The name is propagated to child mocks.


Python Documentation of Mock
因此,为了模拟名称,应在创建 Mock 或 MagicMock 对象之后并在将其传递之前进行设置:
mock_obj = MagicMock()
mock_obj.name = 'bar'

assert mock_obj.name == 'bar'

# Passing mock object forward
...

关于python - 如何使用 unittest.mock.MagicMock 或 Mock 类模拟 `name` 属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62552148/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com