如何用unitetest.mock.MagicMock或Mock类模拟`name`属性?

时间:2020-06-24 09:45:07

标签: python unit-testing mocking

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

Partial_sort_copy

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

1 个答案:

答案 0 :(得分:1)

名称属性在创建期间不能被模拟,因为它具有特殊含义:

name:如果该模拟具有名称,则它将在该模拟的代表中使用。这对于调试很有用。该名称将传播到子模拟。

Python Documentation of Mock

因此,为了模拟名称,应在创建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\'>

相关问题