接口测试中,上传文件的测试场景非常常见。例如:上传头像(图片)、上传文件、上传视频等。下面以一个上传图片的例子为大家讲解如何通过 python 测试上传文件接口。

首先通过抓包分析上传文件接口的请求参数:

下面是上传文件接口脚本。把目标文件以open打开,然后存储到变量file。并且使用files参数指明请求的参数名称、上传文件的类型、以及上传文件的路径。

这里注意: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接口测试文件上传实例解析相关推荐

  1. python抓包代码_Python抓包并解析json爬虫的完整实例代码

    Python抓包并解析json爬虫FwA免费资源网 在使用Python爬虫的时候,通过抓包url,打开url可能会遇见以下类似网址,打开后会出现类似这样的界面,无法继续进行爬虫:FwA免费资源网 Fw ...

  2. python 抓包解析数据_Python抓包并解析json爬虫的完整实例代码

    Python抓包并解析json爬虫 在使用Python爬虫的时候,通过抓包url,打开url可能会遇见以下类似网址,打开后会出现类似这样的界面,无法继续进行爬虫: 例如: 需要爬取网页中第二页的数据时 ...

  3. 使用python抓包并分析后存入数据库,或直接分析tcpdump和wireshark抓到的包,并存入数据库

    准备工作 抓包首先要用到scapy包 安装scapy包 pip install scapy 在python代码中引用scapy包 from scapy.all import * #为了省事,直接imp ...

  4. Python抓包练习-Linux

    需要获取网络中的报文,可以保存为pcap而后读取分析,但是总觉得来回读写数据过于麻烦,不如直接获取报文分析.面向Google编程后,并结合实际的使用,总结如下: 使用python抓包,需要利用scap ...

  5. 【Python】Python抓包

    Python抓包并分析获取请求头 依赖的包 抓包代码 分析代码 scapy中rdpcap分析 dpkt分析 全部代码 使用Python进行数据爬取时,很多情况下需要登录或需要某些Cookie,如果直接 ...

  6. Python抓包并解析json爬虫

    Python抓包并解析json爬虫 在使用Python爬虫的时候,通过抓包url,打开url可能会遇见以下类似网址,打开后会出现类似这样的界面,无法继续进行爬虫: 例如: 需要爬取网页中第二页的数据时 ...

  7. python拦截数据包_httphttps,python抓包知多少

    原标题:http&https,python抓包知多少 在有些情景下,需要拦截所有的http包和https数据包,http包很好抓,但是https包相对比较复杂,在此文章中,主要介绍http和h ...

  8. php上传图片 $__files没有信息_Python接口测试文件上传实例解析

    接口测试中,上传文件的测试场景非常常见.例如:上传头像(图片).上传文件.上传视频等.下面以一个上传图片的例子为大家讲解如何通过 python 测试上传文件接口. 首先通过抓包分析上传文件接口的请求参 ...

  9. python selenium 下载文件_Python Selenium —— 文件上传、下载,其实很简单

    很多selenium学习者被浏览器弹出的文件上传.下载框折磨的痛不欲生,今天博主就带你们轻松搞定上传和下载问题. 上传 上传弹框 文件上传是所有UI自动化测试都要面对的一个头疼问题,要处理这个问题,我 ...

最新文章

  1. 如何在网页中添加flash文件
  2. JavaScriptSerializer序列化和反序列化JSON:使用自定义JavaScriptConverter
  3. 死磕Java并发:J.U.C之阻塞队列:PriorityBlockingQueue
  4. 学习OGRE - 读取天龙八部scene文件
  5. 一个div 上下两行_纯CSS实现单一div的正多边形变换
  6. 如何将python项目部署到服务器_部署python项目到linux服务器
  7. Git提交到码云(转)
  8. java中_null和“”的区别详解
  9. 哪吒:猪八戒十年DevOps演进之路
  10. 关于OPENCV 访问外部传进来的Mat矩阵元素的问题
  11. StyleCop学习笔记——默认的规则
  12. 【TWVRP】基于matlab遗传算法和模拟退火求解带时间窗自行车调度问题【含Matlab源码 370期】
  13. 基于安卓手机的WAPI证书安装使用详解
  14. Android学习笔记-转载SQLite
  15. 2016 server win 假死_Windows 7假死的几个常见情况以及解决方法
  16. 计算机双工模式,windows10系统如何设置网络双工模式?
  17. 显卡驱动一定要更新吗?怎么更新显卡驱动?
  18. 怎么看自己的操作系统?
  19. 数电仿真实验-数字钟的设计
  20. 想要了解大厂PM吗,来看看这几款软件

热门文章

  1. 使用GetDIBts/SetDIBits高速逐点处理 from http://blog.sina.com.cn/s/blog_552ad2090100e3eu.html...
  2. [翻译] C# 3.0语言规范 收藏
  3. 介绍了如何取成员函数的地址以及调用该地址
  4. 使用XmlTextWriter生成XML文件的方法
  5. java8 例外网站_Java8兰巴达斯和例外
  6. mapper里面select id 后面一直红名_YTG晨晨改ID“进厂找班上了”,如此自嘲,心态还挺好...
  7. OpenGL中的Uniform block size 的大小限制
  8. Android开发之AlertDialog设置左右边距的间接办法
  9. Android开发之高仿三方授权登录的实现方案类似微信登录QQ登录微博登录人人网登录
  10. 春运12306的bug