我有一个MagicMock
名为some_magic_mock
created 的对象,用于使用补丁进行测试。
假设修补的对象是some_patched_object
.
在被测代码中有一个调用:
some_patched_object.some_method -= some_parameter
(提醒:-=
实际上是__isub__
方法的语法糖)
现在,在测试代码中,我有以下几行:
print some_magic_mock.mock_calls
some_magic_mock.assert_has_calls([mock.call.some_method.__isub__(some_parameter)])
some_magic_mock.some_method.__isub__.assert_called_once_with(some_parameter)
所以会发生以下情况:
print
声明打印:[call.some_method.__isub__(some_parameter)]"
- 第一个断言 (assert_has_calls) 成功。
- 第二个断言失败并显示错误消息:
Expected to be called once. Called 0 times.
我的印象是断言是相等的,除了第二个断言也call_count
恰好是 1。
鉴于我所看到的,我也不明白为什么第二个断言会失败mock_calls
。
总的来说,我觉得我在这里遗漏了一些细微差别,并且很乐意为我清除它。
编辑1:
对于那些问的人:
这是我的代码的复制粘贴,实际名称更改为“some_X”和“expected_X”,这与上面的内容基本相同:
print self.some_magic_mock.mock_calls
print self.some_magic_mock.some_method.__isub__.mock_calls
self.some_magic_mock.assert_has_calls([mock.call.some_method.__isub__(expected_param)])
self.some_magic_mock.some_method.__isub__.assert_called_once_with(expected_param)
第一次打印产量:[call.some_method.__isub__(expected_param)]
第二次打印产量:[]
第一个断言通过。
第二个断言失败。