gpt4 book ai didi

python - magicmock 多次调用但我不能断言调用

转载 作者:太空宇宙 更新时间:2023-11-04 10:38:15 25 4
gpt4 key购买 nike

( 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() 测试您的 mock 是否只被调用了一次;不要用它来测试 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 个调用。

关于python - magicmock 多次调用但我不能断言调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22300592/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com