接口测试文件上传

在日常工作中,经常有上传文件功能的测试场景,因此,本文介绍两种主流编写上传文件接口测试脚本的方法。

  首先,要知道文件上传的一般原理:客户端根据文件路径读取文件内容,将文件内容转换成二进制文件流的格式传输给服务端,而服务端接受客户端传过来的二进制文件流以及文件名称等信息(此时这些二进制文件流存储在内存中),然后将其写入存储空间(即磁盘中),完成上传操作,返回给客户端信息。

  ok,知道原理后,开始操作。

  本文将根据示例接口,编写文件上传接口脚本(示例接口demo采用python+django编写,后面会讲如何实现),接口信息如下:

  

接口信息:127.0.0.1:8001/case/upload_file
请求方式:post
参数名称:myfile
参数类型:file

方法1:postman编写测试脚本

  a.将接口信息填入请求中,请求参数类型勾选File

  b.点击【select Files】,调用系统文件弹窗选择文件,将文件信息赋值给接口中myfile参数

  c.选择文件参数后,点击【send】按钮发送请求。

  至此,请求发送完毕,查看postman接收到接口返回上传完成信息,上传文件成功出现在目录中(如下图)。

方法2:使用python+requests编写脚本有序列表

import requests

url = "http://127.0.0.1:8001/case/upload_file"
payload = {}
files = [
    ('myfile', ('测试1.mp4', open('C:\\Users\EEO\Videos\Captures\测试1.mp4', 'rb'), 'application/octet-stream'))
]
headers = {}
response = requests.request("POST", url, headers=headers, data=payload, files=files)
print(response.text)

文件

  原理同postman,文件参数要使用File   

       注意:要传入文件所在路径

   如图所示,文件已成功上传至服务器。

### 测试上传文件API的方法 对于上传文件的API功能测试,可以采用多种方式来确保其正常工作。当涉及到像FastAPI这样的框架时,在一个路径操作中声明多个`File`与`Form`参数是可行的,但是不能同时声明接收JSON的Body字段,这是因为HTTP协议规定请求体的编码为`multipart/form-data`而非`application/json`[^1]。 为了有效地测试此类API接口,推荐使用Python中的`requests`库或者专门用于API开发调试的工具如Postman、Apipost等来进行实际的数据提交并观察响应情况[^4]。下面是一个利用`requests`库发送POST请求的例子: ```python import requests url = "http://localhost:8000/rectify" file_path = "/path/to/file.jpg" with open(file_path, 'rb') as f: files = {'file': (file_path.split('/')[-1], f)} data = {"domain": "example"} response = requests.post(url, files=files, data=data) print(response.status_code) print(response.text) ``` 这段代码展示了如何构建一个多部分表单数据(`multipart/form-data`)类型的请求,其中包含了待上传的文件以及额外的形式数据域(即这里的`domain`)。通过这种方式能够模拟真实场景下的文件上传过程,并且可以根据返回的状态码和消息判断是否成功完成上传动作。 另外,在Spring Boot环境中也可以编写单元测试或集成测试案例来验证文件上传逻辑的工作状态,尽管在这种情况下通常不会真正地把文件写入磁盘而是依赖于mock对象来代替具体的业务处理流程[^3]。 #### 使用自动化测试框架 除了手动构造请求外,还可以考虑引入一些流行的Web服务测试框架比如Pytest配合Requests库一起做更全面深入的功能性和性能方面的评估;或者是借助JMeter这类专注于负载压力测试的专业软件去考察服务器应对大量并发连接的能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值