如何测试使用requests包的Python代码(含大文件下载场景)
如何测试使用requests包的Python代码(含大文件下载场景)
嘿,太懂你这种大文件下载测试慢到磨人的痛苦了!给你俩简单易行的方案,不用折腾太多,就能快速搭建本地测试服务返回假的小文件:
方案一:用Python自带的http.server(零额外依赖,快速上手)
这是最省事的临时方案,不用装任何新包:
- 先在本地随便建个小测试文件,比如
test_sample.txt,写几行内容就行 - 打开终端,切换到这个文件所在的目录,跑命令:
python -m http.server 8000 - 把你代码里的URL改成本地服务的地址:
这下requests会直接下载本地的小文件,秒完成测试,再也不用等20分钟啦!url = 'http://localhost:8000/test_sample.txt' response = requests.get(url, allow_redirects=True)
方案二:用Flask搭建自定义测试服务(灵活可控)
如果需要模拟更复杂的场景(比如返回特定响应码、动态生成文件内容),Flask就很合适:
- 先装Flask:
pip install flask - 写个简单的测试服务脚本
test_server.py:from flask import Flask, send_file app = Flask(__name__) @app.route('/test_endpoint') def fake_large_file(): # 方式1:返回本地的小测试文件(和方案一类似,但路径更灵活) return send_file('test_sample.txt', as_attachment=True) # 方式2:直接动态生成内容,连测试文件都不用建 # return "模拟大文件的测试内容\n随便写几行就行", 200 if __name__ == '__main__': app.run(port=8000, debug=True) - 运行这个脚本,然后把代码里的URL改成
http://localhost:8000/test_endpoint,就能拿到你自定义的假文件响应了。
要是你用自动化测试框架(比如pytest),还能把启动服务的步骤写成fixture,让测试自动启停服务,不过上面俩基础方案已经足够解决你的核心问题啦~
备注:内容来源于stack exchange,提问作者user2138149
相关产品推荐
相关产品推荐

