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 将pdf转成图片的方法
Apr 23 Python
matplotlib给子图添加图例的方法
Aug 03 Python
Python运行不显示DOS窗口的解决方法
Oct 22 Python
python学习之hook钩子的原理和使用
Oct 25 Python
浅谈django rest jwt vue 跨域问题
Oct 26 Python
如何在Django中添加没有微秒的 DateTimeField 属性详解
Jan 30 Python
pytorch制作自己的LMDB数据操作示例
Dec 18 Python
python 数据分析实现长宽格式的转换
May 18 Python
Python 实现 T00ls 自动签到脚本代码(邮件+钉钉通知)
Jul 06 Python
Python headers请求头如何实现快速添加
Nov 03 Python
Selenium Webdriver元素定位的八种常用方式(小结)
Jan 13 Python
Elasticsearch 索引操作和增删改查
Apr 19 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
织梦模板标记简介
2007/03/11 PHP
php下的权限算法的实现
2007/04/28 PHP
laravel获取不到session的三种解决办法【推荐】
2018/09/16 PHP
javascript里的条件判断
2007/02/27 Javascript
详解Bootstrap按钮
2016/01/04 Javascript
jQuery事件绑定用法详解(附bind和live的区别)
2016/01/19 Javascript
基于JS组件实现拖动滑块验证功能(代码分享)
2016/11/18 Javascript
Bootstrap复选框和单选按钮美化插件(推荐)
2016/11/23 Javascript
基于滚动条位置判断的简单实例
2017/12/14 Javascript
Vue项目总结之webpack常规打包优化方案
2019/06/06 Javascript
JavaScript 格式化数字、金额、千分位、保留几位小数、舍入舍去
2019/07/23 Javascript
你不可不知的Vue.js列表渲染详解
2019/10/01 Javascript
python爬取拉勾网职位数据的方法
2018/01/24 Python
python使用参数对嵌套字典进行取值的方法
2019/04/26 Python
python实现可变变量名方法详解
2019/07/01 Python
python opencv 二值化 计算白色像素点的实例
2019/07/03 Python
python爬虫爬取幽默笑话网站
2019/10/24 Python
python实现字符串和数字拼接
2020/03/02 Python
python生成并处理uuid的实现方式
2020/03/03 Python
pygame实现飞机大战
2020/03/11 Python
Python运行提示缺少模块问题解决方案
2020/04/02 Python
英国家庭家具、照明和花园家具购物网站:Furniture123
2018/12/31 全球购物
澳大利亚领先的优质葡萄酒拍卖会:Langton’s Fine Wines
2019/03/24 全球购物
英国网上自行车商店:Tredz Bikes
2019/10/29 全球购物
List, Set, Map是否继承自Collection接口?
2016/05/16 面试题
这段代码难道不该打印出56吗
2013/02/27 面试题
技术总监个人的自我评价范文
2013/12/18 职场文书
大学生演讲稿范文
2014/01/11 职场文书
暑期培训随笔感言
2014/03/10 职场文书
小学生演讲稿大全
2014/04/25 职场文书
北京导游词
2015/02/12 职场文书
辞职信怎么写
2015/02/27 职场文书
教师自荐信范文
2015/03/06 职场文书
读后感怎么写?书写读后感的基本技巧!
2019/12/10 职场文书
go xorm框架的使用
2021/05/22 Golang
基于Python绘制子图及子图刻度的变换等的问题
2021/05/23 Python