Python接口测试文件上传实例解析
作者:深圳阿张 时间:2023-04-19 15:59:28
接口测试中,上传文件的测试场景非常常见。例如:上传头像(图片)、上传文件、上传视频等。下面以一个上传图片的例子为大家讲解如何通过 python 测试上传文件接口。
首先通过抓包分析上传文件接口的请求参数:
下面是上传文件接口脚本。把目标文件以open打开,然后存储到变量file。并且使用files参数指明请求的参数名称、上传文件的类型、以及上传文件的路径。
这里注意:content-type参数,如果我们通过form-data的方式上传文件,我们发送post请求的时候,headers这个参数中一定不能要包括这个值,,requests库会帮忙添加这个元素,加了可能会报错。
代码实现:
import requests
from utils.LogUtil import my_log
from faker import Faker
log=my_log()
faker = Faker('zh_CN')
class marketCreate():
def loginToken(self,mobile,code):
'''
登陆、注册接口
:param mobile: 手机号
:param code: 验证码
:return:
'''
url='http://api.xxxxxx.net/v1/user/loginOrRegister' #登陆接口请求地址
headers={'Content-Type': 'application/json'} #请求头信息,json数据类型
json={"code":code,"deviceId":"5de548ad0e268bc0","deviceName":"HWNXT","mobile":mobile,"mobilePrefix":"63","version":"39"} #请求数据
r=requests.post(url,headers=headers,json=json) #发送请求
token=r.json()['data']['userVO']['token'] #获取token
log.info('手机号'+mobile+'的token值为:'+token) #打印日志
return token #将token返回出去
def uploadimages(self,mobile,file_path,filename):
'''
上传图片接口
:param mobile: 手机号
:param file_path: 文件路径
:param filename: 文件名称
:return:
'''
token = self.loginToken(mobile=mobile, code='789789') #请求登陆接口,获取token
url='http://api.xxxxxx.net/v1/upload/images' #上传文件接口请求地址
headers={'token': token} #请求头信息关联token。不需要赋值Content-Type,requests库会帮忙添加这个元素,加了可能会报错。
file_data={'file':(filename,open(file_path,'rb'),'image/jpeg')} #重点:上传文件请求数据。
r=requests.post(url=url,headers=headers,files=file_data) #发送请求
print(r.json()) #打印响应结果
if __name__ == '__main__':
m=marketCreate()
# 测试,输入手机号、文件地址、文件名称信息;
m.uploadimages(mobile='639266558329',file_path='D:\pyCharm_work\cmkjProject\data\market.jpg',filename='123456.jpg')
执行结果:
C:\Python38\python.exe D:/pyCharm_work/cmkjProject/page/marketPage.py
2020-01-02 13:48:09,580-D:\pyCharm_work\cmkjProject\utils\LogUtil.py-INFO-手机号639266558329的token值为:ba9b4f622fa4d6461523870c0d00df46
{'code': 0, 'data': '/group1/M00/00/00/rBDKPF4NhE-ABIFmAAGhT9tm-NA158.jpg', 'success': True}
Process finished with exit code 0
来源:https://www.jianshu.com/p/231e4773f7f3
标签:Python,接口,测试,文件,上传
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
Django 对IP访问频率进行限制的例子
2022-02-14 05:40:38
Python线程创建和终止实例代码
2022-06-29 11:01:34
Vue新一代状态管理工具Pinia的具体使用
2024-05-09 15:11:53
![](https://img.aspxhome.com/file/2023/8/126558_0s.jpg)
基于Python脚本实现邮件报警功能
2023-02-04 17:16:41
Python 中将二进制转换为整数的多种方法
2023-01-11 17:30:53
关于vue3中setup函数的使用
2024-06-05 09:16:16
![](https://img.aspxhome.com/file/2023/9/123059_0s.jpg)
selenium+python自动化测试之环境搭建
2022-05-15 13:51:32
![](https://img.aspxhome.com/file/2023/1/75901_0s.png)
PhpStorm配置debug环境的详细过程
2023-05-26 20:04:32
Asp中Scripting.TextStream 对象介绍
2007-11-02 12:19:00
python 对任意数据和曲线进行拟合并求出函数表达式的三种解决方案
2021-10-02 12:40:16
![](https://img.aspxhome.com/file/2023/9/67349_0s.jpg)
Javascript vue.js表格分页,ajax异步加载数据
2024-05-21 10:13:05
![](https://img.aspxhome.com/file/2023/5/126145_0s.png)
opencv形态学中的孔洞填充详细图解
2021-08-14 00:44:10
![](https://img.aspxhome.com/file/2023/8/93748_0s.gif)
javascript 缓冲效果实现代码 推荐
2024-04-29 13:36:08
MySQL数据优化-多层索引
2024-01-20 10:13:46
![](https://img.aspxhome.com/file/2023/3/100343_0s.png)
Python实现数据地址实体抽取
2022-12-03 00:23:18
![](https://img.aspxhome.com/file/2023/4/112614_0s.jpg)
layui点击按钮页面会自动刷新的解决方案
2024-04-18 09:33:11
![](https://img.aspxhome.com/file/2023/4/136454_0s.jpg)
python读文件逐行处理的示例代码分享
2023-03-17 03:54:04
详解python日期时间处理
2021-08-20 17:07:53
![](https://img.aspxhome.com/file/2023/6/114596_0s.png)
详解Laravel模型事件和模型事件在Trait中的使用
2023-06-17 17:19:28
在asp中使用js的encodeURIComponent方法
2012-11-30 20:05:53