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装饰器验证配置文件示例
Feb 24 Python
python爬虫入门教程--HTML文本的解析库BeautifulSoup(四)
May 25 Python
Python面向对象基础入门之设置对象属性
Dec 11 Python
Python简易版图书管理系统
Aug 12 Python
python selenium实现发送带附件的邮件代码实例
Dec 10 Python
keras获得model中某一层的某一个Tensor的输出维度教程
Jan 24 Python
Python3实现飞机大战游戏
Apr 24 Python
Python生成pdf目录书签的实例方法
Oct 29 Python
Python利用matplotlib绘制折线图的新手教程
Nov 05 Python
python元组拆包实现方法
Feb 28 Python
python中如何对多变量连续赋值
Jun 03 Python
Python TypeError: ‘float‘ object is not subscriptable错误解决
Dec 24 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实现懒加载的方法
2015/03/07 PHP
Linux+Nginx+MySQL下配置论坛程序Discuz的基本教程
2015/12/23 PHP
关于Yii中模型场景的一些简单介绍
2019/09/22 PHP
prototype class详解
2006/09/07 Javascript
js实现的网页颜色代码表全集
2007/07/17 Javascript
JS正则表达式判断有效数实例代码
2017/03/13 Javascript
基于openlayers4实现点的扩散效果
2020/08/17 Javascript
vue完成项目后,打包成静态文件的方法
2018/09/03 Javascript
详解使用JWT实现单点登录(完全跨域方案)
2019/08/02 Javascript
JavaScript生成一个不重复的ID的方法示例
2019/09/16 Javascript
详解JavaScript中精度失准问题及解决方法
2020/02/04 Javascript
JavaScript实现图片伪异步上传过程解析
2020/04/10 Javascript
[03:48]显微镜下的DOTA2第四期——TP动作
2014/06/20 DOTA
[01:00:52]2018DOTA2亚洲邀请赛 4.4 淘汰赛 EG vs LGD 第一场
2018/04/05 DOTA
Python3中多线程编程的队列运作示例
2015/04/16 Python
Python中创建字典的几种方法总结(推荐)
2017/04/27 Python
在Python web中实现验证码图片代码分享
2017/11/09 Python
python实现简易动态时钟
2018/11/19 Python
Python设计模式之抽象工厂模式原理与用法详解
2019/01/15 Python
Python opencv实现人眼/人脸识别以及实时打码处理
2019/04/29 Python
Python使用字典实现的简单记事本功能示例
2019/08/15 Python
Django 自定义分页器的实现代码
2019/11/24 Python
解决Keras 与 Tensorflow 版本之间的兼容性问题
2020/02/07 Python
python爬取音频下载的示例代码
2020/10/19 Python
利用CSS3的border-radius绘制太极及爱心图案示例
2016/05/17 HTML / CSS
美国奢侈品购物平台:Orchard Mile
2018/05/02 全球购物
为您的家、后院、车库等在线购物:Spreetail
2019/06/17 全球购物
英国在线照明超市:Castlegate Lights
2019/10/30 全球购物
家乐福台湾线上购物网:Carrefour台湾
2020/09/15 全球购物
利用指针变量实现队列的入队操作
2012/04/07 面试题
医药销售求职信范文
2014/02/01 职场文书
优秀德育工作者事迹材料
2014/05/07 职场文书
应用外语系自荐信
2014/06/26 职场文书
尊老爱幼演讲稿
2014/09/04 职场文书
Python制作春联的示例代码
2022/01/22 Python
python井字棋游戏实现人机对战
2022/04/28 Python