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搜索引擎实现原理和方法
Nov 27 Python
python matplotlib画图实例代码分享
Dec 27 Python
Python学习之Anaconda的使用与配置方法
Jan 04 Python
Python爬虫常用小技巧之设置代理IP
Sep 13 Python
浅谈Scrapy网络爬虫框架的工作原理和数据采集
Feb 07 Python
深度辨析Python的eval()与exec()的方法
Mar 26 Python
python numpy 常用随机数的产生方法的实现
Aug 21 Python
python实现飞船游戏的纵向移动
Apr 24 Python
基于python计算并显示日间、星期客流高峰
May 07 Python
Keras框架中的epoch、bacth、batch size、iteration使用介绍
Jun 10 Python
Python爬虫如何破解JS加密的Cookie
Nov 19 Python
K近邻法(KNN)相关知识总结以及如何用python实现
Jan 28 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
【星际争霸1】人族1v7家ZBath
2020/03/04 星际争霸
PHP 伪静态隐藏传递参数名的四种方法
2010/02/22 PHP
PHP 5.3.1 安装包 VC9 VC6不同版本的区别是什么
2010/07/04 PHP
PHP中你应该知道的require()文件包含的正确用法
2015/06/12 PHP
Laravel中encrypt和decrypt的实现方法
2017/09/24 PHP
splice slice区别
2006/10/09 Javascript
JQuery 构建客户/服务分离的链接模型中Table分页代码效率初探
2010/01/22 Javascript
window.showModalDialog()返回值的学习心得总结
2014/01/07 Javascript
JS设置获取cookies的方法
2014/01/26 Javascript
动态显示可输入的字数提示还可以输入的字数
2014/04/01 Javascript
js实现兼容性好的微软官网导航下拉菜单效果
2015/09/07 Javascript
原生javascript实现自动更新的时间日期
2016/02/12 Javascript
JQuery解析XML的方法小结
2016/04/02 Javascript
Jquery实现的简单轮播效果【附实例】
2016/04/19 Javascript
Active控件问题小结(附解决办法)
2016/06/09 Javascript
微信小程序 视图层(xx.xml)和逻辑层(xx.js)详细介绍
2016/10/13 Javascript
JS编写函数实现对身份证号码最后一位的验证功能
2016/12/29 Javascript
jquery实现数字输入框
2017/02/22 Javascript
BootStrap表单时间选择器详解
2017/05/09 Javascript
详解vue2.0 使用动态组件实现 Tab 标签页切换效果(vue-cli)
2017/08/30 Javascript
微信小程序三级联动选择器使用方法
2020/05/19 Javascript
vue2.0 实现导航守卫(路由守卫)
2018/05/21 Javascript
jQuery实现模糊搜索功能的方法分析
2018/06/29 jQuery
Python的爬虫包Beautiful Soup中用正则表达式来搜索
2016/01/20 Python
从头学Python之编写可执行的.py文件
2017/11/28 Python
python爬取酷狗音乐排行榜
2019/02/20 Python
用python建立两个Y轴的XY曲线图方法
2019/07/08 Python
python基于pdfminer库提取pdf文字代码实例
2019/08/15 Python
pytorch 自定义参数不更新方式
2020/01/06 Python
Django用户身份验证完成示例代码
2020/04/03 Python
Python基于wordcloud及jieba实现中国地图词云图
2020/06/09 Python
Anaconda使用IDLE的实现示例
2020/09/23 Python
HTML5 canvas实现移动端上传头像拖拽裁剪效果
2016/03/14 HTML / CSS
实习生个人总结范文
2015/02/28 职场文书
质量承诺书格式范文
2015/04/28 职场文书
军训后的感想
2015/08/07 职场文书