Python接口测试文件上传实例解析

作者:深圳阿张 时间:2023-04-19 15:59:28 

接口测试中,上传文件的测试场景非常常见。例如:上传头像(图片)、上传文件、上传视频等。下面以一个上传图片的例子为大家讲解如何通过 python 测试上传文件接口。

首先通过抓包分析上传文件接口的请求参数:

Python接口测试文件上传实例解析

下面是上传文件接口脚本。把目标文件以open打开,然后存储到变量file。并且使用files参数指明请求的参数名称、上传文件的类型、以及上传文件的路径。

Python接口测试文件上传实例解析

这里注意: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,接口,测试,文件,上传
0
投稿

猜你喜欢

  • Django 对IP访问频率进行限制的例子

    2022-02-14 05:40:38
  • Python线程创建和终止实例代码

    2022-06-29 11:01:34
  • Vue新一代状态管理工具Pinia的具体使用

    2024-05-09 15:11:53
  • 基于Python脚本实现邮件报警功能

    2023-02-04 17:16:41
  • Python 中将二进制转换为整数的多种方法

    2023-01-11 17:30:53
  • 关于vue3中setup函数的使用

    2024-06-05 09:16:16
  • selenium+python自动化测试之环境搭建

    2022-05-15 13:51:32
  • PhpStorm配置debug环境的详细过程

    2023-05-26 20:04:32
  • Asp中Scripting.TextStream 对象介绍

    2007-11-02 12:19:00
  • python 对任意数据和曲线进行拟合并求出函数表达式的三种解决方案

    2021-10-02 12:40:16
  • Javascript vue.js表格分页,ajax异步加载数据

    2024-05-21 10:13:05
  • opencv形态学中的孔洞填充详细图解

    2021-08-14 00:44:10
  • javascript 缓冲效果实现代码 推荐

    2024-04-29 13:36:08
  • MySQL数据优化-多层索引

    2024-01-20 10:13:46
  • Python实现数据地址实体抽取

    2022-12-03 00:23:18
  • layui点击按钮页面会自动刷新的解决方案

    2024-04-18 09:33:11
  • python读文件逐行处理的示例代码分享

    2023-03-17 03:54:04
  • 详解python日期时间处理

    2021-08-20 17:07:53
  • 详解Laravel模型事件和模型事件在Trait中的使用

    2023-06-17 17:19:28
  • 在asp中使用js的encodeURIComponent方法

    2012-11-30 20:05:53
  • asp之家 网络编程 m.aspxhome.com