接口自动化测试——文件上传/下载
接口自动化测试——文件上传/下载
蔡坨坨转载请注明出处❤️
作者:测试蔡坨坨
原文链接:caituotuo.top/9cf3344.html
你好,我是测试蔡坨坨。
我们在做接口自动化测试的时候,经常会碰到文件上传接口
和文件下载接口
。
那么,文件接口跟普通接口有什么区别呢?又该如何实现呢?
〇、前言
文件上传/下载接口
与普通接口
类似,但是有细微的区别。
如果需要发送文件到服务器,例如:上传文档、图片、视频等,就需要发送二进制数据,上传文件一般使用的都是 Content-Type: multipart/form-data
数据类型,可以发送文件,也可以发送相关的消息体数据。
反之,文件下载就是将二进制格式的响应内容存储到本地,并根据需要下载的文件格式来写文件名,例如:F:/caituotuo-file.pdf。
一、文件上传接口
1. 接口文档
Request URL: /createfile
Request Method: POST
Content-Type: multipart/form-data
名称 | 类型 | 是否必须 | 描述 |
---|---|---|---|
file | File | 是 | 文件 |
title | String | 是 | 文件名称 |
fileType | String | 是 | 文件类型:doc, docx, txt, pdf, png, gif, jpg, jpeg, tiff, html, rtf, xls, txt |
2. 代码实现
(1)实现步骤:
构造文件数据,通过open()函数以二进制方式打开文件
文件上传接口参数与普通post请求一样,需要写成Key和Value模式,Key为参数名称file(也是组件的name属性),Value为一个元组(与普通接口不同的地方)
1
2
3
4
5"file": (
"caituotuo-file.pdf", # 元组第一个值为文件名称,没有则取None
open(r"F:\caituotuo-file.pdf", "rb"), # 若第一个值非None,则取文件open打开的二进制流,否则直接写文件路径,如"F:\caituotuo-file.pdf"
"pdf" # 文件类型
)1
2
3
4"file": (
None,
"F:\caituotuo-file.pdf"
)构造其他数据
1
2
3
4{
"title": "接口上传的文件",
"fileType": "pdf"
}发送请求,将文件数据以
files
参数传入,其他消息体数据通过data
、headers
、cookies
等传入1
2
3
4
5
6
7
8
9
10req = {
"url": "127.0.0.1/createfile",
"method": "POST",
"headers": {},
"files": {"file": ("caituotuo-file.pdf", open(r"F:\caituotuo-file.pdf", "rb"), "pdf")},
"data": {
"title": "接口上传的文件",
"fileType": "pdf"
}
}
(2)完整代码
1 | # -*- coding:utf-8 -*- |
二、文件下载接口
1. 接口文档
Request URL:/download
Request Method:GET
名称 | 类型 | 是否必须 | 描述 |
---|---|---|---|
id | Long | 是 | 文件组id |
downloadItems | String[] | 否 | 下载可选项 |
needCompressForOneFile | Boolean | 是,默认单文件也压缩 | 当下载的文件仅一份时,是否压缩 |
2. 代码实现
1 | # -*- coding:utf-8 -*- |
评论
匿名评论隐私政策