如何使用"httpretty"模拟请求



下面是我尝试编写的一个测试:

import httpretty
import requests

@httpretty.activate
def test():
httpretty.register_uri(
httpretty.GET,
"http://localhost:8000",
body='{"origin": "127.0.0.1"}',
status=200
)
requests.get("http://localhost:8000")

然而,当我用pytest运行它时,我会得到

requests.exceptions.ConnectionError: ('Connection aborted.', ConnectionRefusedError(111, 'Connection refused'))

看着文件,我想我已经逐字逐句地遵循了它——有什么建议吗?

问题中代码块的具体问题是,在指定端口时,httpretty需要在对register_uri的调用中在url中包含一个尾部斜杠。register_uri的文档中确实有关于这一点的警告,但我仍然觉得这是一个缺失的阶梯。

因此,您需要的基本示例代码是:

httpretty.register_uri(
httpretty.GET,
"http://localhost:8000/",
body='{"origin": "127.0.0.1"}',
status=200
)

我发现了这个技巧,也遇到了我自己的问题,这似乎表明,当涉及到尾随斜杠时,指定端口并不是唯一的因素。

我最终切换到了响应库,它似乎与pytest fixture相处得更好。

最新更新