gpt4 book ai didi

python - 模拟跨库的调用链

转载 作者:行者123 更新时间:2023-12-01 05:20:59 29 4
gpt4 key购买 nike

我正在使用hammock用于将请求抽象到内部 API 的库。在我的代码中,其中 self.api 是一个 Hammock 对象,我进行以下调用:

posts = self.api.posts().GET(params=params).json().get('objects')

其中 .GET 返回响应对象,.json 将其转换为字典,.get 返回该字典中“objects”键的值。

我想要的是整个调用只返回我已经设置的固定装置。然而,当我尝试 self.worker.api.posts.get = Mock(return_value=fixture) 之类的方法时,它不起作用。它调用实​​际的 API。

这是可能的,还是我应该放弃尝试模拟这样一个特定的调用,而只是满足于模拟包含它的方法?

最佳答案

您需要在模拟上设置所有return_values。当您调用 self.api.posts() 时,会返回一个模拟,您想要获取此模拟并设置其返回值,该返回值将是一个具有 GET() 的对象code> 方法,您还想模拟它的返回值,直到您想模拟的最后一次调用。

示例如下:

self.api.posts.return_value.GET.return_value.json.return_value.get = Mock(return_value=fixture)

我的工作示例:

json_obj = mock.MagicMock(return_value=self.hardcoced_labels)
con.return_value.repos.return_value.labels.GET.return_value.json = json_obj

关于python - 模拟跨库的调用链,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22386725/

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