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使用cStringIO实现临时内存文件访问的方法
Mar 26 Python
使用Pyrex来扩展和加速Python程序的教程
Apr 13 Python
Python实现霍夫圆和椭圆变换代码详解
Jan 12 Python
Python实现七彩蟒蛇绘制实例代码
Jan 16 Python
python selenium 获取标签的属性值、内容、状态方法
Jun 22 Python
PyCharm+PySpark远程调试的环境配置的方法
Nov 29 Python
Python从文件中读取指定的行以及在文件指定位置写入
Sep 06 Python
python中的逆序遍历实例
Dec 25 Python
Python中zip函数如何使用
Jun 04 Python
python 深度学习中的4种激活函数
Sep 18 Python
python 将html转换为pdf的几种方法
Dec 29 Python
Python词云的正确实现方法实例
May 08 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/10/19 PHP
学习YUI.Ext 第四天--对话框Dialog的使用
2007/03/10 Javascript
JS OOP包机制,类创建的方法定义
2009/11/02 Javascript
js时间戳格式化成日期格式的多种方法
2013/11/11 Javascript
JavaScript将取代AppleScript?
2014/09/18 Javascript
JavaScript字符串删除重复字符的方法
2015/12/25 Javascript
原生JS实现不断变化的标签
2017/05/22 Javascript
微信小程序实现轮播图效果
2017/09/07 Javascript
jquery获取select选中值的文本,并赋值给另一个输入框的方法
2018/08/21 jQuery
JS实现简单的点赞与踩功能示例
2018/12/05 Javascript
微信小程序实现手势滑动卡片效果
2019/08/26 Javascript
layui中的switch开关实现方法
2019/09/03 Javascript
使用xampp将angular项目运行在web服务器的教程
2019/09/16 Javascript
Centos7 安装Node.js10以上版本的方法步骤
2019/10/15 Javascript
js实现点赞按钮功能的实例代码
2020/03/06 Javascript
jQuery实现计算器功能
2020/10/19 jQuery
[02:59]DOTA2完美大师赛主赛事第三日精彩集锦
2017/11/25 DOTA
python实现udp数据报传输的方法
2014/09/26 Python
用Python创建声明性迷你语言的教程
2015/04/13 Python
python实现telnet客户端的方法
2015/04/15 Python
python实现中文分词FMM算法实例
2015/07/10 Python
python检查URL是否正常访问的小技巧
2017/02/25 Python
对python的bytes类型数据split分割切片方法
2018/12/04 Python
TensorFlow车牌识别完整版代码(含车牌数据集)
2019/08/05 Python
python异步Web框架sanic的实现
2020/04/27 Python
Python 判断时间是否在时间区间内的实例
2020/05/16 Python
解决redis与Python交互取出来的是bytes类型的问题
2020/07/16 Python
印尼最大的婴儿用品购物网站:Orami
2017/09/28 全球购物
12月小学生校园广播稿
2014/02/04 职场文书
青年志愿者先进事迹
2014/05/06 职场文书
晚会开场白和结束语
2015/05/29 职场文书
家长对学校的意见和建议
2015/06/03 职场文书
纪委立案决定书
2015/06/24 职场文书
理想国读书笔记
2015/06/25 职场文书
祝福语集锦:给妹妹结婚的祝福语
2019/12/18 职场文书
python编写五子棋游戏
2021/05/25 Python