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中的文件和目录操作实现代码
Mar 13 Python
python实现多线程采集的2个代码例子
Jul 07 Python
零基础写python爬虫之使用Scrapy框架编写爬虫
Nov 07 Python
Python多线程和队列操作实例
Jun 21 Python
浅谈python多线程和队列管理shell程序
Aug 04 Python
pytorch实现focal loss的两种方式小结
Jan 02 Python
使用python实现多维数据降维操作
Feb 24 Python
Python3 操作 MySQL 插入一条数据并返回主键 id的实例
Mar 02 Python
Python实现转换图片背景颜色代码
Apr 30 Python
Python更换pip源方法过程解析
May 19 Python
Python常用base64 md5 aes des crc32加密解密方法汇总
Nov 06 Python
Pytorch之扩充tensor的操作
Mar 04 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 读取文件乱码问题
2010/02/20 PHP
探讨如何在PHP开启gzip页面压缩实例
2013/06/09 PHP
thinkPHP5框架中widget的功能与用法详解
2018/06/11 PHP
Laravel如何同时连接多个数据库详解
2019/08/13 PHP
编写针对IE的JS代码两种编写方法
2013/01/30 Javascript
JavaScript实现网页图片等比例缩放实现代码及调用方式
2013/02/25 Javascript
jquery.cookie() 方法的使用(读取、写入、删除)
2013/12/05 Javascript
脚本合并提升javascript性能示例
2014/02/24 Javascript
jQuery操作select下拉框的text值和value值的方法
2014/05/31 Javascript
js从Cookies里面取值的简单实现
2014/06/30 Javascript
浅谈Nodejs观察者模式
2015/10/13 NodeJs
Jquery+Ajax+PHP+MySQL实现分类列表管理(上)
2015/10/28 Javascript
谈一谈jQuery核心架构设计
2016/03/28 Javascript
ES6新特性之字符串的扩展实例分析
2017/04/01 Javascript
ionic中的$ionicPlatform.ready事件中的通用设置
2017/06/11 Javascript
Angular X中使用ngrx的方法详解(附源码)
2017/07/10 Javascript
微信小程序实现图片懒加载的示例代码
2017/12/13 Javascript
[01:04:01]2014 DOTA2华西杯精英邀请赛5 24 DK VS VG
2014/05/25 DOTA
[01:12:53]完美世界DOTA2联赛PWL S2 Forest vs SZ 第一场 11.25
2020/11/26 DOTA
编写Python CGI脚本的教程
2015/06/29 Python
python中从str中提取元素到list以及将list转换为str的方法
2018/06/26 Python
python如何制作缩略图
2019/04/30 Python
Python列表与元组的异同详解
2019/07/02 Python
在Python函数中输入任意数量参数的实例
2019/07/16 Python
详解pyinstaller selenium python3 chrome打包问题
2019/10/18 Python
Django之腾讯云短信的实现
2020/06/12 Python
django使用graphql的实例
2020/09/02 Python
Avène雅漾美国官方网站:敏感肌肤护理专家
2016/10/24 全球购物
FC-Moto西班牙:摩托车手最大的购物场所之一
2019/04/11 全球购物
FC-Moto美国:欧洲最大的摩托车服装和头盔商店之一
2019/08/24 全球购物
strlen的几种不同实现方法
2013/05/31 面试题
施工安全承诺书
2014/05/22 职场文书
交通事故被告代理词
2015/05/23 职场文书
使用Django实现商城验证码模块的方法
2021/06/01 Python
MySQL数据库索引的最左匹配原则
2021/11/20 MySQL
JavaScript实现两个数组的交集
2022/03/25 Javascript