使用 Python 的HTTPretty 库,我可以创建选择的模拟 HTTP 响应,然后使用requests 库选择它们,如下所示:
import httpretty
import requests
# set up a mock
httpretty.enable()
httpretty.register_uri(
method=httpretty.GET,
uri='http://www.fakeurl.com',
status=200,
body='My Response Body'
)
response = requests.get('http://www.fakeurl.com')
# clean up
httpretty.disable()
httpretty.reset()
print(response)
出去:<Response [200]>
是否还有可能注册一个无法访问的 uri(例如连接超时、连接被拒绝……),这样根本就没有收到任何响应(这与已建立的连接不同,它会给出 HTTP 错误代码像404)?
我想在单元测试中使用这种行为来确保我的错误处理按预期工作(在“未建立连接”和“建立连接,错误的 HTTP 状态代码”的情况下会做不同的事情)。作为一种解决方法,我可以尝试连接到一个无效的服务器,这样http://192.0.2.0
无论如何都会超时。但是,我更愿意在不使用任何真实网络连接的情况下进行所有单元测试。