python模拟“assert_has_calls”和“assert_called_once_with”的细微差别

时间:2013-01-31 08:02:16

标签: python mocking assert

我为使用补丁的测试创建了一个名为MagicMock的{​​{1}}对象。

说修补的对象是some_magic_mock

在测试代码中有一个电话:

some_patched_object

(提醒:some_patched_object.some_method -= some_parameter 实际上是-=方法的语法习惯)

现在,在测试代码中,我有以下几行:

__isub__

所以会发生以下情况:

  1. 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
  2. 第一个断言(assert_has_calls)成功。
  3. 第二个断言失败,并显示错误消息:[call.some_method.__isub__(some_parameter)]"
  4. 我的印象是断言是平等的,除了第二个断言也断言Expected to be called once. Called 0 times.正好是1。

    我也不明白为什么第二个断言因我看到的call_count而失败。

    总的来说,我觉得我在这里缺少一些细微差别,并乐意为我清理它。

    编辑1:

    对于那些问: 这是我的代码的复制粘贴,实际名称更改为“some_X”和“expected_X”,这基本上与上述相同:

    mock_calls

    首次打印产量: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)]

    第一个断言通过。
    第二个断言失败了。

0 个答案:

没有答案