0

我正在使用 python 请求来访问一些 api,最近我学习了 requests_mock 来模拟 http 响应以进行测试。我正在使用的 api 的响应非常大

adapter.register_uri('GET', 'http://api.gateway/payment/, text='VERY LARGE TEXT')

传递大型响应文本的正确方法是什么?

4

1 回答 1

0

这里没有真正的魔法,在一天结束时,除非你正在做流媒体请求,否则无论如何都会将所有数据加载到内存中。

如果您真的担心内存(而且它是 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'
于 2020-12-15T04:03:26.920 回答