gpt4 book ai didi

python - 如何模拟函数以返回带有属性的响应?

转载 作者:太空宇宙 更新时间:2023-11-04 04:07:33 26 4
gpt4 key购买 nike

我在弄乱 unittest.mock 并遇到了一些问题。

我有一个对象 client,方法 get_messages() 返回 response 属性 data有_更多。我想模拟它在第一次调用时返回固定的 datahas_more ,在第二次调用时返回另一个固定的 datahas_more打电话。

在第一次调用中,我想接收具有属性的对象 response:data=['msg1', 'msg2']has_more=True

在第二次调用中,我想接收具有属性的对象响应:

data=['msg3', 'msg4']

我一直在尝试这样做,但我有点困惑,不知道是不是这样。

@patch('Client')
def test_client_returns_correct_messages(self, MockClient):
MockWebClient.get_messages.side_effects = [
Mock(name='response',
data={'messages': received_messages,
'has_more': True}),
Mock(name='response',
data={'messages': received_messages,
'has_more': False})]

messages = client.get_messages()

最佳答案

好吧,我找到了答案...大体上我的代码没问题,但我打错了:side_effects而不是 side_effect - 注意 s。应该是side_effect . Mock 接受一切,所以它没有引发错误。下次肯定会使用规范 :D 我仍然不知道这是否是正确的方法,但它有效。

这是工作代码:

@patch('Client')
def test_client_returns_correct_messages(self, MockClient):
MockWebClient.get_messages.side_effect = [
Mock(name='response',
data={'messages': received_messages,
'has_more': True}),
Mock(name='response',
data={'messages': received_messages,
'has_more': False})]

messages = client.get_messages()

关于python - 如何模拟函数以返回带有属性的响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56975736/

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