在工作中对于下载接口,经常会有这样的疑问:这类接口一般功能比较稳定,但是又比较重要,需要占用回归测试时间,有没有可替代的方式?
答案肯定是有的,可以从接口测试/UI自动化测试介入,而本文主要讲述接口测试,提供两种方法。
文件下载接口的一般实现
A. 一般项目中,文件存储/下载都是公司基础建设提供的能力,大部分实现都是获取到所下载文件的URL,然后浏览器会去执行下载操作(效果同在浏览器中直接输入该下载URL),因此,需要先找到该文件的下载URL,然后在通过脚本/工具进行模拟下载
B. 下载接口需要自己编写,提供下载能力
以上两种方式对于下载原理都是一样的,本质上都是获取到下载URL然后由浏览器去执行下载,实际项目中根据自己项目类型找到对应URL即可。
本文中我们采用上述B中的方式(下载接口demo采用python+django编写,接口里写死的下载文件信息,后面会写如何实现),接口信息如下:
URL:http://127.0.0.1:8001/case/down
请求方式:不限
下载接口测试脚本编写
方法1:使用测试必备神器之postman进行下载接口的脚本编写
1.将URL以及headers等信息填入postman,如下图:
2. 点击send and download,会调用系统弹窗给下载文件重命名
点击保存,即可下载成功
方法2:使用python+requests编写接口测试脚本
文件下载时,是以二进制格式传输的,需要设置sream=True参数
将二进制内容写入到下载目录所在的文件中
import requests
from contextlib import closing
url = 'http://127.0.0.1:8001/case/down'
with closing(requests.get(url, stream=True)) as response:
with open("文件名1.py", "wb") as file:
for data in response.iter_content(128):
file.write(data)
如图,文件下载成功。