【问题标题】:provide large responses to python requests_mock对 python requests_mock 提供大量响应
【发布时间】:2021-01-10 01:09:55
【问题描述】:
我正在使用 python 请求来访问一些 api,最近我学习了 requests_mock 来模拟 http 响应以进行测试。
我正在使用的来自 api 的响应非常大
adapter.register_uri('GET', 'http://api.gateway/payment/, text='VERY LARGE TEXT')
传递大型响应文本的正确方法是什么?
【问题讨论】:
标签:
python
django
unit-testing
python-requests
requests-mock
【解决方案1】:
这里并没有真正的魔法,在一天结束时,除非您正在执行流式请求,否则无论如何都会将所有数据加载到内存中。
如果你真的很担心内存(它是 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'