不考虑参数的Python MagicMock assert_called_one_w



我正在设置一个MagicMock实例,用不同的参数调用同一个方法两次,并将我的断言设置为只验证一组参数。

Python:3.5.2

from unittest.mock import MagicMock
my_mock = MagicMock()
my_mock.some_method()
my_mock.some_method(123)
my_mock.some_method.assert_called_once_with(123)
AssertionError: Expected 'some_method' to be called once. Called 2 times.

我希望这件事能通过。为什么它忽略了这些争论?

我们发现assert_colled_with实际上就是我们想要的。

它看起来很混乱,我认为应该称为assert_called_only_once_with。

来自unittest.mock文档:

assert_colled_once_with(*args,**kwargs(

断言mock只调用过一次,并且该调用带有指定的参数。

由于您要调用该方法两次,因此应该会失败。

在这种特定情况下,您可以使用:

expected_calls = [call(), call(123)]
my_mock.some_method.assert_has_calls(expected_calls, any_order=False)

它将断言预期的调用已按expected_calls中指定的顺序使用

相关内容

  • 没有找到相关文章

最新更新