我正在设置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.
我希望这会过去。为什么它会忽略参数?
答案 0 :(得分:0)
我们发现assert_call_with实际上就是我们想要的。
这似乎令人困惑,我认为应该将其命名为assert_linked_only_once_with。
答案 1 :(得分:0)
来自unittest.mock
docs:
断言_once_with(* args,** kwargs)
断言该模拟只被调用了一次,并且该调用是使用指定的参数进行的。
由于您两次调用该方法,因此应该会失败。
在这种情况下,您可以使用:
expected_calls = [call(), call(123)]
my_mock.some_method.assert_has_calls(expected_calls, any_order=False)
将断言预期的呼叫已按照expected_calls