在使用模拟库时,我遇到了调用my_mock.reset_mock()
方法返回一个新Mock
实例而不是重置my_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 导入的模块(每个模块不同)