Python使用Requests库进行文件上传接口测试详解

江屿
江屿
发布时间:2026-10-13 | 3人浏览过
原创

本文详细解析如何使用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接口测试中文件上传功能的完整解析,希望能为读者的学习带来帮助,同时也欢迎大家继续支持本站获取更多技术资源。

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表