pythonmock.mock_重置()返回mock而不是重置m

2024-09-20 04:06:34 发布

您现在位置:Python中文网/ 问答频道 /正文

在使用mock库时,我遇到了这样一种情况:调用my_mock.reset_mock()方法返回一个新的Mock实例,而不是重置{}。显然,我在某种程度上掩饰了Mock.reset_mock(),但我不知道这是怎么发生的。在

示例运行(Python 2.7):

>>> mocks.normal_mock.mock_calls
Out[6]: []
>>> mocks.normal_mock.reset_mock()
>>> mocks.normal_mock.mock_calls
Out[8]: []
>>> mocks.abnormal_mock.mock_calls
Out[2]: []
>>> mocks.abnormal_mock.reset_mock()
>>> <MagicMock name='abnormal_mock.reset_mock()' id='157604104'>
>>> mocks.abnormal_mock.mock_calls
Out[4]: [call.reset_mock()]

知道是什么原因造成的吗?在

附加信息:

  • 所有模拟都封装在一个指定的类中,该类实例化一次,并在unittest.TestCase.tearDown()中的测试之间重置。在
  • 所有模拟都是通过调用某个修补对象/方法/模块上的patch.start()创建的
  • 在我的示例中,正常和异常模拟都模拟了由UUT导入的模块(每个模块都是不同的模块)

Tags: 模块实例方法示例my情况outmock
1条回答
网友
1楼 · 发布于 2024-09-20 04:06:34

发现了问题。在

由于某种复杂的模拟创建方法,我在一个已经修补的模块上调用patch(),也就是说,我正在修补一个Mock()对象。由于autospec是{}的修补程序调用,mock_reset()被修补了。在

解决方案是简化模拟创建流程。在

相关问题 更多 >