Python使用Requests库进行文件上传接口测试详解
本文详细解析如何使用Python的Requests库进行文件上传接口的自动化测试。通过抓包分析请求参数,重点讲解如何利用files参数指定文件名、类型及路径,并强调在form-data模式下需移除手动设置的Content-Type头部,避免请求报错。附带完整代码示例与执行结果,帮助开发者掌握接口测试中文件上传的核心技巧。
文件上传接口测试场景概述
在接口测试的实际场景中,文件上传是非常高频的测试用例,涵盖头像图片、各类文档以及视频文件等多种类型。接下来,我们将以上传图片为例,深入讲解如何利用Python完成文件上传接口的测试工作。
请求参数分析与脚本实现
进行接口测试前,首先需要借助抓包工具分析上传文件接口的具体请求参数结构。

以下是实现文件上传接口的Python脚本示例。代码中通过open函数以二进制模式打开目标文件,并将其赋值给变量file。关键在于使用requests库的files参数,该参数用于明确指定请求中的字段名称、文件MIME类型以及本地文件路径。

需要特别注意Content-Type请求头的问题。当采用form-data格式上传文件时,发送POST请求的headers参数中绝对不能手动包含Content-Type字段。因为requests库会自动根据文件内容生成正确的boundary及Content-Type值,若手动添加该头部,极易导致请求格式错误而报错。
具体代码实现如下:
核心代码逻辑解析
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
以上内容即为关于Python接口测试中文件上传功能的完整解析,希望能为读者的学习带来帮助,同时也欢迎大家继续支持本站获取更多技术资源。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









