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 19 Python
Python复制文件操作实例详解
Nov 10 Python
Python网络编程详解
Oct 31 Python
python中的迭代和可迭代对象代码示例
Dec 27 Python
小白如何入门Python? 制作一个网站为例
Mar 06 Python
python 多进程并行编程 ProcessPoolExecutor的实现
Oct 11 Python
python写一个随机点名软件的实例
Nov 28 Python
Python随机数函数代码实例解析
Feb 09 Python
自定义实现 PyQt5 下拉复选框 ComboCheckBox的完整代码
Mar 30 Python
Django ORM实现按天获取数据去重求和例子
May 18 Python
如何让python的运行速度得到提升
Jul 08 Python
Python 使用双重循环打印图形菱形操作
Aug 09 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
PHP实现QQ空间自动回复说说的方法
2015/12/02 PHP
PHP文件上传操作实例详解
2016/09/27 PHP
利用php实现一周之内自动登录存储机制(cookie、session、localStorage)
2016/10/31 PHP
详解PHP处理密码的几种方式
2016/11/30 PHP
php中的异常和错误浅析
2017/05/03 PHP
ThinkPHP5.1+Ajax实现的无刷新分页功能示例
2020/02/10 PHP
javascript Object与Function使用
2010/01/11 Javascript
文本框获得焦点和失去焦点的判断代码
2012/03/18 Javascript
jQuery学习笔记 操作jQuery对象 CSS处理
2012/09/19 Javascript
javascript中判断一个值是否在数组中并没有直接使用
2012/12/17 Javascript
网页整体变灰白色(兼容各浏览器)实例
2013/04/21 Javascript
JS动态添加与删除select中的Option对象(示例代码)
2013/12/20 Javascript
jquery修改网页背景颜色通过css方法实现
2014/06/06 Javascript
node.js中的buffer.write方法使用说明
2014/12/10 Javascript
jQuery使用hide方法隐藏元素自身用法实例
2015/03/30 Javascript
JavaScript中的call方法和apply方法使用对比
2015/08/12 Javascript
基于jQuery实现弹出可关闭遮罩提示框实例代码
2016/07/18 Javascript
浅谈JavaScript事件绑定的常用方法及其优缺点分析
2016/11/01 Javascript
NodeJS测试框架mocha入门教程
2017/03/28 NodeJs
Bootstrap布局之栅格系统学习笔记
2017/05/04 Javascript
vue配置font-awesome5的方法步骤
2019/01/27 Javascript
仿ElementUI实现一个Form表单的实现代码
2019/04/23 Javascript
VUE前后端学习tab写法实例
2019/08/06 Javascript
vue使用vue-quill-editor富文本编辑器且将图片上传到服务器的功能
2021/01/13 Vue.js
vue实现轮播图帧率播放
2021/01/26 Vue.js
[02:32]DOTA2亚洲邀请赛 VG战队巡礼
2015/02/03 DOTA
[51:53]完美世界DOTA2联赛循环赛 LBZS vs DM BO2第二场 11.01
2020/11/02 DOTA
python连接sql server乱码的解决方法
2013/01/28 Python
Python多线程经典问题之乘客做公交车算法实例
2017/03/22 Python
Python实现基于POS算法的区块链
2018/08/07 Python
Python3爬虫发送请求的知识点实例
2020/07/30 Python
在子网210.27.48.21/30种有多少个可用地址?分别是什么?
2014/07/27 面试题
如何清空Session
2015/02/23 面试题
优秀体育委员自荐书
2014/01/31 职场文书
职工运动会邀请函
2014/02/02 职场文书
个人三严三实对照检查材料
2014/09/25 职场文书