使用Python的HTTPretty library,我可以创建所选的模拟HTTP响应,然后使用requests library进行拾取,如下所示:
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(例如连接超时、连接被拒绝…),以至于根本没有收到任何响应(这与发出404之类的HTTP错误代码的已建立连接不同)?在
我希望在单元测试中使用这种行为,以确保我的错误处理按预期工作(在“未建立连接”和“已建立连接,错误的HTTP状态代码”的情况下,它会执行不同的操作)。作为一种解决方法,我可以尝试连接到一个无效的服务器,比如http://192.0.2.0
,它在任何情况下都会超时。但是,我更愿意在不使用任何实际网络连接的情况下进行所有单元测试。在
同时我明白了,使用HTTPretty callback body似乎可以产生所需的行为。请参阅下面的内联注释。 这实际上与我所寻找的并不完全相同(它不是一个无法到达的服务器,因此请求超时,而是一个一旦到达超时异常就会抛出超时异常的服务器,然而,对于我的用例,效果是一样的。在
不过,如果有人知道不同的解决方案,我还是很期待。在
相关问题 更多 >
编程相关推荐