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中getattr函数使用方法 getattr实现工厂模式
Jan 20 Python
python实现给字典添加条目的方法
Sep 25 Python
Python中list列表的一些进阶使用方法介绍
Aug 15 Python
Empty test suite.(PyCharm程序运行错误的解决方法)
Nov 30 Python
Django组件content-type使用方法详解
Jul 19 Python
对Django外键关系的描述
Jul 26 Python
Python代码实现http/https代理服务器的脚本
Aug 12 Python
Python操作SQLite/MySQL/LMDB数据库的方法
Nov 07 Python
详解django中Template语言
Feb 22 Python
jupyter lab的目录调整及设置默认浏览器为chrome的方法
Apr 10 Python
Python实现清理微信僵尸粉功能示例【基于itchat模块】
May 29 Python
用Python实现Newton插值法
Apr 17 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版微信公众平台开发之验证步骤实例详解
2016/09/23 PHP
lnmp安装多版本PHP共存的方法详解
2018/08/02 PHP
PHP的mysqli_sqlstate()函数讲解
2019/01/23 PHP
不同浏览器的怪癖小结
2010/07/11 Javascript
Javascript中Array.prototype.map()详解
2014/10/22 Javascript
全面解析Bootstrap中transition、affix的使用方法
2016/05/30 Javascript
微信小程序 开发指南详解
2016/09/27 Javascript
原生JS简单实现ajax的方法示例
2016/11/29 Javascript
JavaScript中localStorage对象存储方式实例分析
2017/01/12 Javascript
vue 2.0组件与v-model详解
2017/03/27 Javascript
vue实现表格数据的增删改查
2017/07/10 Javascript
Vue通过URL传参如何控制全局console.log的开关详解
2017/12/07 Javascript
解决vue的变量在settimeout内部效果失效的问题
2018/08/30 Javascript
详解Vue组件之间通信的七种方式
2019/04/14 Javascript
javascript实现日历效果
2019/06/17 Javascript
Nodejs技巧之Exceljs表格操作用法示例
2019/11/06 NodeJs
javascript操作元素的常见方法小结
2019/11/13 Javascript
Nodejs + Websocket 指定发送及群聊的实现
2020/01/09 NodeJs
[15:58]DOTA2国际邀请赛采访专栏:Tongfu.Sansheng&KingJ,DK.rOtk
2013/08/08 DOTA
[04:13]2018国际邀请赛典藏宝瓶Ⅱ饰品一览
2018/07/21 DOTA
python自动化测试之从命令行运行测试用例with verbosity
2014/09/28 Python
Python性能优化的20条建议
2014/10/25 Python
django创建自定义模板处理器的实例详解
2017/08/14 Python
Python实现常见的回文字符串算法
2018/11/14 Python
python+selenium 定位到元素,无法点击的解决方法
2019/01/30 Python
Python3.5内置模块之shelve模块、xml模块、configparser模块、hashlib、hmac模块用法分析
2019/04/27 Python
使用python和pygame制作挡板弹球游戏
2019/12/03 Python
浅谈pytorch 模型 .pt, .pth, .pkl的区别及模型保存方式
2020/05/25 Python
使用Python封装excel操作指南
2021/01/29 Python
HTML5 Canvas自定义圆角矩形与虚线示例代码
2013/08/02 HTML / CSS
HTML5单页面手势滑屏切换原理分析
2017/07/10 HTML / CSS
德国药房apodiscounter中文官网:德国排名前三的网上药店
2019/06/03 全球购物
保卫工作个人总结
2015/03/03 职场文书
硕士毕业答辩开场白
2015/05/27 职场文书
新教师教学工作总结
2015/08/12 职场文书
六年级作文之家庭作文
2019/12/12 职场文书