此处仅模拟某种类型的网址的代码
def mocked_requests_patch(*args, **kwargs):
url = args[0]
if url.find('additional_address') != -1:
return 'mocked response'
return requests.patch(*args, **kwargs)
requests.patch = MagicMock(side_effect=mocked_requests_patch)
但我当然得到maximum recursion depth exceeded while calling a Python object
看到了一些像这样的问题,但没有找到任何使用MagicMock
答案 0 :(得分:2)
您可能找不到明确的问题,因为在安装模拟之前保存您自己对模拟方法的引用相对简单,在典型的使用中,patcher用于处理安装和卸载通过start()
和stop()
系统地模拟。
在这种特殊情况下,因为您要模拟requests.patch
,您可能需要考虑使用requests_mock包,因为它提供了一种机制,允许将某些请求发送到真正的http方法。实际上,您可以通过检查来源start()
saves a reference对stop()