『动善时』JMeter基础 — 15、使用JMeter实现上传文件
在上一篇文章【使用JMeter发送Post请求】中,我们只介绍了在参数选项页中添加数据,并且使用了两种提交数据类型application/x-www-form-urlencoded
和multipart/form-data
进行演示。
这篇文章我们说明如何使用文件上传选项页,实现Post请求上传文件。
1、用于演示的项目说明
Httpbin
是一个使用Python + Flask
编写的HTTP Request & Response Service
项目,该服务主要用于测试 HTTP库,你可以向他发送请求,然后他会按照指定的规则将你的请求返回(查看你所发送请求中的信息)。
Httpbin
支持HTTP/HTTPS
请求,支持所有的HTTP动词,能测试HTTP请求和响应的各种信息,比如 cookie
、ip
、headers
和登录验证等。
Httpbin
接口地址:http://httpbin.org/
提示:按照规则请求
http://httpbin.org/
,会返回发送请求报文的完整内容。具体可查看https://www.cnblogs.com/liuyuelinfighting/p/14788860.html文章,有详细说明。
2、测试计划内包含的元件
添加元件操作步骤:
- 创建测试计划。
- 创建线程组:
选中“测试计划”右键 —> 添加 —> 线程(用户) —> 线程组
。 - 在线程组里面,添加取样器“HTTP请求”组件:
选中“线程组”右键 —> 添加 —> 取样器 —> HTTP请求
。 - 在线程组里面,添加监听器“察看结果树”组件:查看结果,
选中“线程组”右键 —> 添加 —> 监听器 —> 察看结果树
。
最终测试计划中的元件如下:
点击运行按钮,会提示你先保存该脚本,脚本保存完成后会直接自动运行该脚本。
3、HTTP请求界面内容
取样器“HTTP请求”界面,如下图所示:
关于参数编辑如下:
(1)编写接口所需要上传的文件数据
上传文件选项页内容:
说明:
- 上传文件时,需要勾选
Use multipart/form-data for post
选项。(我个人实践中发现,在上传文件选项页编辑参数后,Post请求默认会以multipart/form-data
数据格式进行提交数据,勾不勾选没有区别。但是工作中按照接口文档来操作,如果没有说明最后好勾选上。) - 在上传文件选项页中,需要填写三个参数:
1)文件名称:输入上传文件的路径;(注意:通过以JMeter脚本所在目录为目标点,可以使用文件的相对路径。)
2)参数名称:自定义变量名,例如Filedata
(被赋值于文件内容);
3)MIME类型:例如application/octet-stream
。 - 参数选项页和消息体数据选项页只能选择其一。
(2)编写接口所需要的其他数据
我们在上传文件的同时,也可以在参数选项页中添加接口需要其他参数:
4、查看结果
执行脚本后,结果如下图所示:
我们可以看到文件中的内容和Form表单中的数据,都发送出去了。
5、总结
在日常工作中,如果接口写的很详细,我们就完全按照接口文档的要求编写JMeter脚本。
如果接口中有部分内容写的不明确,我们可以按照通用的请求规范来编写JMeter脚本。
如果面对一个项目没有接口文档,那我们就需要使用工具抓取请求,来查看该接口具体的内容,当然可以找开发沟通了解。
6、补充:MIME类型简介
(1)MIME说明
MIME(Multipurpose Internet Mail Extensions)
:多用途网络邮件扩展类型,可被称为Media type
或Content type
。
MIME用于设定某种类型的文件,当被浏览器打开的时候,需要用什么样的应用程序。多用于HTTP通信和设定文档类型例如HTML。
即:之所以叫多用途网络邮件扩展类型,因为它最早被用于电子邮件系统,后用于浏览器。
概括的说:MIME类型即Content-Type
的值,服务端会检测这个Content-Type
的值。
(2)常见类型
如下表:
文件后缀 | Mime类型 | 说明 |
---|---|---|
.flv |
flv/flv-flash |
在线播放 |
.html或.htm |
text/html |
超文本标记语言文本 |
.rtf |
application/rtf |
RTF文本 |
.gif |
image/gif |
GIF图形 |
.jpeg 或.jpg |
image/jpeg |
JPEG图形 |
.au |
audio/basic |
au声音文件 |
.mid 或.midi |
audio/midi 或audio/x-midi |
MIDI音乐文件 |
.ra 或.ram 或.rm |
audio/x-pn-realaudio |
RealAudio音乐文件 |
.mpg 或.mpeg 或.mp3 |
video/mpeg |
MPEG文件 |
.avi |
video/x-msvideo |
AVI文件 |
.gz |
application/x-gzip |
GZIP文件 |
.tar |
application/x-tar |
TAR文件 |
.exe |
application/octet-stream |
下载文件类型 |
.rmvb |
video/vnd.rn-realvideo |
在线播放 |
.txt |
text/plain |
普通文本 |
.mrp |
application/octet-stream |
MRP文件(国内普遍的手机) |
.ipa |
application/iphone-package-archive |
IPA文件(IPHONE) |
.deb |
application/x-debian-package-archive |
DED文件(IPHONE) |
.apk |
application/vnd.android.package-archive |
APK文件(安卓系统) |
.cab |
application/vnd.cab-com-archive |
CAB文件(Windows Mobile) |
.xap |
application/x-silverlight-app |
XAP文件(Windows Phone 7) |
.sis |
application/vnd.symbian.install-archive |
SIS文件(symbian平台) |
.jar |
application/java-archive |
JAR文件(JAVA平台手机通用格式) |
.jad |
text/vnd.sun.j2me.app-descriptor |
JAD文件(JAVA平台手机通用格式) |
.sisx |
application/vnd.symbian.epoc/x-sisx-app |
SISX文件(symbian平台) |
『动善时』JMeter基础 — 15、使用JMeter实现上传文件的更多相关文章
- 『动善时』JMeter基础 — 12、JMeter取样器详解:sampler
目录 1.取样器介绍 2.JMeter自带的取样器 3."HTTP请求"为例介绍一下取样器 (1)HTTP Request: (2)Web服务器: (3)HTTP请求: (4)同请 ...
- 『动善时』JMeter基础 — 14、使用JMeter发送Post请求
目录 1.Post请求参数类型说明 2.用于演示的项目说明 3.发送Post请求示例 (1)测试计划内包含的元件 (2)请求参数类型为x-www-form-urlencoded 4.请求参数form- ...
- 『动善时』JMeter基础 — 6、使用JMeter发送一个最基础的请求
目录 步骤1:创建一个测试计划 步骤2:创建线程组 步骤3:创建取样器 步骤4:创建监听器 步骤5:完善信息 步骤6:保存测试计划 步骤7:查看结果 总结:JMeter测试计划要素 当我们第一次打开J ...
- 『动善时』JMeter基础 — 41、使用JMeter连接数据库(MySQL)
目录 1.为什么要使用JMeter连接数据库 2.JMeter连接数据库的前提 3.JDBC连接配置组件界面介绍 4.JMeter连接数据库演示 (1)测试计划内包含的元件 (2)测试计划中添加链接数 ...
- 『动善时』JMeter基础 — 2、JMeter的安装和启动
1.安装Java环境 由于JMeter是纯Java的桌面应用程序,因此它的运行环境需要Java环境,即需要安装JDK或JRE.(也就是安装JDK环境) 步骤简要说明: 下载并安装JDK 配置环境变量 ...
- 『动善时』JMeter基础 — 7、jmeter.properties文件常用配置
目录 1.默认语言设置 2.配置默认编码格式 3.GUI图标放大比例设置 4.功能区工具栏图标大小设置 5.视图区目录树图标大小设置 6.内容区编辑字体设置 7.添加JMeter元素快捷键设置 8.捕 ...
- 『动善时』JMeter基础 — 27、通过JMeter函数助手实现参数化
目录 1.测试计划中的元件 2.数据文件内容 3.函数助手配置 (1)函数助手的打开方式 (2)函数助手界面介绍 (3)编辑后的函数助手界面 4.HTTP请求组件内容 5.线程组元件内容 6.脚本运行 ...
- 『动善时』JMeter基础 — 47、JMeter的HTTP代理服务器详细介绍
目录 1.HTTP代理服务器的添加 2.HTTP代理服务器界面详解 (1)State:状态 (2)Global Settings:全局设置 (3)Test Plan Creation:测试计划创建 ( ...
- 『动善时』JMeter基础 — 50、使用JMeter测试WebService接口
目录 1.什么是WebService 2.WebService和SOAP的关系 3.什么是WSDL 4.测试WebService接口前的准备 (1)如何判断是WebService接口 (2)如何获取W ...
随机推荐
- Database | 浅谈Query Optimization (2)
为什么选择左深连接树 对于n个表的连接,数量为卡特兰数,近似\(4^n\),因此为了减少枚举空间,早期的优化器仅考虑左深连接树,将数量减少为\(n!\) 但为什么是左深连接树,而不是其他样式呢? 如果 ...
- 机器学习--Micro Average,Macro Average, Weighted Average
根据前面几篇文章我们可以知道,当我们为模型泛化性能选择评估指标时,要根据问题本身以及数据集等因素来做选择.本篇博客主要是解释Micro Average,Macro Average,Weighted A ...
- xman_2019_format(非栈上格式化字符串仅一次利用的爆破)
xman_2019_format(非栈上格式化字符串仅一次利用的爆破) 首先检查一下程序的保护机制 然后用IDA分析一下 存在后门 首先malloc了一片堆空间,读入数据 把刚刚读入的数据当作格式化字 ...
- JDBC_05_ResorceBundle(资源绑定器) 绑定配置文件
ResorceBundle(资源绑定器) 绑定配置文件 jdbc.proprtise 需要在src目录下新建一个文件夹然后将jdbc.proprtise放在文件中然后右键该文件夹选择 Rebuild ...
- Day01_03_Java名词
java名词 SDK 软件开发工具包 JDK Java的软件开发工具包,其中包括Java虚拟机(JVM),Java运行环境(即jre),Java工具(编译器,运行工具等)和Java基础类库等. JRE ...
- 15个问题告诉你如何使用Java泛型
摘要:Java泛型其本质是参数化类型,也就是说所操作的数据类型被指定为一个参数(type parameter)这种参数类型可以用在类.接口和方法的创建中,分别称为泛型类.泛型接口.泛型方法. Java ...
- Nginx配置图片请求
Nginx的下载安装这里就不赘述了, 在Nginx的配置文件nginx.conf 或者 自定义的配置文件中加入如下配置. server { listen 80; server_ ...
- 提示No input file specified的解决方法
(一)IIS Noinput file specified 方法一:改PHP.ini中的doc_root行,打开ini文件注释掉此行,然后重启IIS 方法二: 请修改php.ini 找到 ; cgi. ...
- Docker学习笔记---通俗易懂
目录 Docker 简介 Docker安装 Docker的基本组成 安装Docker 配置阿里云镜像加速 回顾helloworld流程 工作原理 Docker的常用命令 帮助命令 镜像命令 容器命令 ...
- Winrar漏洞复现(CVE-2018-20250)
本文讲的是Winrar漏洞利用脚本的使用方法,至于Winrar漏洞的原理,请移步--> Winrar目录穿越漏洞复现 本次利用脚本出处--> https://github.com/back ...