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


Posted in Python onMay 22, 2020

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python 面向对象 成员的访问约束
Dec 23 Python
在Python中操作列表之List.pop()方法的使用
May 21 Python
在Python程序中操作文件之isatty()方法的使用教程
May 24 Python
python中pandas.DataFrame的简单操作方法(创建、索引、增添与删除)
Mar 12 Python
Python学习教程之常用的内置函数大全
Jul 14 Python
python实现redis三种cas事务操作
Dec 19 Python
Numpy中的mask的使用
Jul 21 Python
将python文件打包成EXE应用程序的方法
May 22 Python
简单了解Django ContentType内置组件
Jul 23 Python
python 如何去除字符串头尾的多余符号
Nov 19 Python
解决os.path.isdir() 判断文件夹却返回false的问题
Nov 29 Python
Python调用ffmpeg开源视频处理库,批量处理视频
Nov 16 Python
计算Python Numpy向量之间的欧氏距离实例
May 22 #Python
python numpy矩阵信息说明,shape,size,dtype
May 22 #Python
python查看矩阵的行列号以及维数方式
May 22 #Python
30行Python代码实现高分辨率图像导航的方法
May 22 #Python
Python3 Tensorlfow:增加或者减小矩阵维度的实现
May 22 #Python
Python pandas如何向excel添加数据
May 22 #Python
python3.8.1+selenium实现登录滑块验证功能
May 22 #Python
You might like
如何使用脚本模仿登陆过程
2006/11/22 PHP
通过具体程序来理解PHP里面的抽象类
2010/01/28 PHP
Notice: Trying to get property of non-object problem(PHP)解决办法
2012/03/11 PHP
php设计模式之适配器模式原理、用法及注意事项详解
2019/09/24 PHP
JavaScript语言中的Literal Syntax特性分析
2007/03/08 Javascript
实现连缀调用的map方法(prototype)
2009/08/05 Javascript
关于firefox的ElementTraversal 接口 使用说明
2010/11/11 Javascript
js实现按一下删除键删除整个单词附demo
2014/09/05 Javascript
Jquery根据浏览器窗口改变调整大小的方法
2017/02/07 Javascript
JavaScript数据类型的存储方法详解
2017/08/25 Javascript
Vue源码学习之初始化模块init.js解析
2017/11/02 Javascript
React传值 组件传值 之间的关系详解
2019/08/26 Javascript
vue中的v-if和v-show的区别详解
2019/09/01 Javascript
node.js中事件触发器events的使用方法实例分析
2019/11/23 Javascript
[53:15]2018DOTA2亚洲邀请赛3月29日 小组赛A组 LGD VS TNC
2018/03/30 DOTA
Python实现二叉堆
2016/02/03 Python
Python设计模式之抽象工厂模式
2016/08/25 Python
Python 3.x 判断 dict 是否包含某键值的实例讲解
2018/07/06 Python
python调用staf自动化框架的方法
2018/12/26 Python
Python实现多态、协议和鸭子类型的代码详解
2019/05/05 Python
Python画图高斯分布的示例
2019/07/10 Python
python3文件复制、延迟文件复制任务的实现方法
2019/09/02 Python
python3 mmh3安装及使用方法
2019/10/09 Python
OpenCV哈里斯(Harris)角点检测的实现
2020/01/15 Python
CSS3打造百度贴吧的3D翻牌效果示例
2017/01/04 HTML / CSS
Mountain Warehouse波兰官方网站:英国户外品牌
2019/08/29 全球购物
写给老师的表扬信
2014/01/21 职场文书
运动会开幕式主持词
2014/03/28 职场文书
资源环境与城乡规划管理专业自荐书
2014/09/26 职场文书
学生上课迟到检讨书
2015/01/01 职场文书
普宁寺导游词
2015/02/04 职场文书
专项资金申请报告
2015/05/15 职场文书
Pytorch 统计模型参数量的操作 param.numel()
2021/05/13 Python
纯CSS如何禁止用户复制网页的内容
2021/11/01 HTML / CSS
详解Vue router路由
2021/11/20 Vue.js
PostgreSQL数据库去除重复数据和运算符的基本查询操作
2022/04/12 PostgreSQL