我正在使用 python 请求来访问一些 api,最近我学习了 requests_mock 来模拟 http 响应以进行测试。我正在使用的 api 的响应非常大
adapter.register_uri('GET', 'http://api.gateway/payment/, text='VERY LARGE TEXT')
传递大型响应文本的正确方法是什么?
我正在使用 python 请求来访问一些 api,最近我学习了 requests_mock 来模拟 http 响应以进行测试。我正在使用的 api 的响应非常大
adapter.register_uri('GET', 'http://api.gateway/payment/, text='VERY LARGE TEXT')
传递大型响应文本的正确方法是什么?
这里没有真正的魔法,在一天结束时,除非你正在做流媒体请求,否则无论如何都会将所有数据加载到内存中。
如果您真的担心内存(而且它是 python,您可能不应该),您总是可以按需从文件加载或其他东西,但我认为这更多的是关于您希望如何构建测试而不是 requests_mock会帮助你。
import requests
import requests_mock
def fileLoader(filename):
def loader(req, context):
with open(filename, 'r') as f:
return f.read()
return loader
with requests_mock.mock() as m:
m.get('http://test.com', text=fileLoader('abc.txt'))
resp = requests.get('http://test.com')
assert resp.text.strip() == 'ABC'