我有一个方法,它使用不同的参数调用另一个方法两次.
class A(object): def helper(self, arg_one, arg_two): """Return something which depends on arguments.""" def caller(self): value_1 = self.helper(foo, bar) # First call. value_2 = self.helper(foo_bar, bar_foo) # Second call!
使用assert_called_with
帮助我断言第一个呼叫,而不是第二个呼叫.甚至assert_called_once_with
似乎没有帮助.我在这里错过了什么?有没有办法测试这样的电话?
您可以使用mock_calls
包含对方法的所有调用.此列表包含第一个呼叫,第二个呼叫以及所有后续呼叫.因此,您可以编写断言mock_calls[1]
来陈述关于第二个调用的内容.
例如,如果m = mock.Mock()
和代码一样,m.method(123)
那么你写:
assert m.method.mock_calls == [mock.call(123)]
断言调用列表m.method
恰好是一个调用,即带参数123的调用.