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(Tornado)模拟登录小米抢手机
Nov 12 Python
python 使用get_argument获取url query参数
Apr 28 Python
Python的语言类型(详解)
Jun 24 Python
Python设计模式之命令模式简单示例
Jan 10 Python
python中requests和https使用简单示例
Jan 18 Python
python 遍历列表提取下标和值的实例
Dec 25 Python
Python实现的合并两个有序数组算法示例
Mar 04 Python
Python XlsxWriter模块Chart类用法实例分析
Mar 11 Python
python实现手机销售管理系统
Mar 19 Python
django 类视图的使用方法详解
Jul 24 Python
Python爬虫基础之简单说一下scrapy的框架结构
Jun 26 Python
Python万能模板案例之matplotlib绘制直方图的基本配置
Apr 13 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中通过ADODB库实现调用Access数据库之修正版本
2006/12/31 PHP
Yii框架函数简单用法分析
2019/09/09 PHP
JS函数验证总结(方便js客户端输入验证)
2010/10/29 Javascript
初学js插入节点appendChild insertBefore使用方法
2011/07/04 Javascript
使用PHP+JQuery+Ajax分页的实现
2013/04/23 Javascript
jQuery产品间断向下滚动效果核心代码
2014/05/08 Javascript
js跨域访问示例(客户端/服务端)
2014/05/19 Javascript
jQuery基本过滤选择器用法示例
2016/09/09 Javascript
vue 2.0封装model组件的方法
2017/08/03 Javascript
React Native第三方平台分享的实例(Android,IOS双平台)
2017/08/04 Javascript
jQuery实现手机号正则验证输入及自动填充空格功能
2018/01/02 jQuery
简单了解Javscript中兄弟ifream的方法调用
2019/06/17 Javascript
laypage+SpringMVC实现后端分页
2019/07/27 Javascript
vue.js 2.0实现简单分页效果
2019/07/29 Javascript
Layui 动态禁止select下拉的例子
2019/09/03 Javascript
SSM+layUI 根据登录信息显示不同的页面方法
2019/09/20 Javascript
python使用PyV8执行javascript代码示例分享
2013/12/04 Python
python中nan与inf转为特定数字方法示例
2017/05/11 Python
Python中栈、队列与优先级队列的实现方法
2019/06/30 Python
Django model 中设置联合约束和联合索引的方法
2019/08/06 Python
python3 selenium自动化 frame表单嵌套的切换方法
2019/08/23 Python
Python (Win)readline和tab补全的安装方法
2019/08/27 Python
python 成功引入包但无法正常调用的解决
2020/03/09 Python
Pycharm 2020.1 版配置优化的详细教程
2020/08/07 Python
土耳其家居建材网站:Koçtaş
2016/11/22 全球购物
医院门卫岗位职责
2013/12/30 职场文书
初中三好学生事迹材料
2014/01/13 职场文书
十佳大学生事迹材料
2014/01/29 职场文书
校长先进事迹材料
2014/02/01 职场文书
数学兴趣小组活动总结
2014/07/08 职场文书
公司演讲稿开场白
2014/08/25 职场文书
2014学习优秀共产党员先进事迹思想汇报
2014/09/14 职场文书
2016教师校本研修心得体会
2016/01/08 职场文书
用php如何解决大文件分片上传问题
2021/07/07 PHP
python数据分析之单因素分析线性拟合及地理编码
2022/06/25 Python
win10双系统怎么删除一个系统?win10电脑有两个系统删除一个的操作方法
2022/07/15 数码科技