magicmock多次调用,但我无法断言调用
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了magicmock多次调用,但我无法断言调用相关的知识,希望对你有一定的参考价值。
(Python 2.6)
我有一个方法:
def send_all(self, messages):
for message in messages:
queue.send(message)
我想断言每个消息都会调用queue.send()
queue = MagicMock()
myobj= MyObject(queue)
myobj.send_all(test_messages)
for test_message in test_messages:
queue.send.assert_called_once_with(test_message)
test_messages
中的55条消息中的每条消息都是唯一的。我收到以下错误:
AssertionError: Expected to be called once. Called 55 times.
答案
assert_called_once_with()
测试你的模拟只被调用一次;不要用它来测试55个不同的电话。
相反,声称这些55次调用是使用mock.assert_has_calls()
方法进行的:
queue.send.assert_has_calls([call(test_message) for test_message in test_messages])
这将测试是否存在55个调用序列;它不会限制模拟被多次调用。
你也可以测试mock.mock_calls
attribute:
assert queue.send.mock_calls == [call(test_message) for test_message in test_messages]
这将测试这55个电话。
以上是关于magicmock多次调用,但我无法断言调用的主要内容,如果未能解决你的问题,请参考以下文章
forEach on map function js断言测试未运行