在上一篇文章【使用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、测试计划内包含的元件

添加元件操作步骤:

  1. 创建测试计划。
  2. 创建线程组:选中“测试计划”右键 —> 添加 —> 线程(用户) —> 线程组。
  3. 在线程组里面,添加取样器“HTTP请求”组件:选中“线程组”右键 —> 添加 —> 取样器 —> HTTP请求。
  4. 在线程组里面,添加监听器“察看结果树”组件:查看结果,选中“线程组”右键 —> 添加 —> 监听器 —> 察看结果树。

最终测试计划中的元件如下:

点击运行按钮,会提示你先保存该脚本,脚本保存完成后会直接自动运行该脚本。

3、HTTP请求界面内容

取样器“HTTP请求”界面,如下图所示:

关于参数编辑如下:

(1)编写接口所需要上传的文件数据

上传文件选项页内容:

说明:

  1. 上传文件时,需要勾选Use multipart/form-data for post选项。(我个人实践中发现,在上传文件选项页编辑参数后,Post请求默认会以multipart/form-data数据格式进行提交数据,勾不勾选没有区别。但是工作中按照接口文档来操作,如果没有说明最后好勾选上。)
  2. 在上传文件选项页中,需要填写三个参数:

    1)文件名称:输入上传文件的路径;(注意:通过以JMeter脚本所在目录为目标点,可以使用文件的相对路径。)

    2)参数名称:自定义变量名,例如Filedata(被赋值于文件内容);

    3)MIME类型:例如application/octet-stream。
  3. 参数选项页和消息体数据选项页只能选择其一。

(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平台)

参考:https://www.cnblogs.com/alummox/p/9515147.html

『动善时』JMeter基础 — 15、使用JMeter实现上传文件的更多相关文章

  1. 『动善时』JMeter基础 — 12、JMeter取样器详解:sampler

    目录 1.取样器介绍 2.JMeter自带的取样器 3."HTTP请求"为例介绍一下取样器 (1)HTTP Request: (2)Web服务器: (3)HTTP请求: (4)同请 ...

  2. 『动善时』JMeter基础 — 14、使用JMeter发送Post请求

    目录 1.Post请求参数类型说明 2.用于演示的项目说明 3.发送Post请求示例 (1)测试计划内包含的元件 (2)请求参数类型为x-www-form-urlencoded 4.请求参数form- ...

  3. 『动善时』JMeter基础 — 6、使用JMeter发送一个最基础的请求

    目录 步骤1:创建一个测试计划 步骤2:创建线程组 步骤3:创建取样器 步骤4:创建监听器 步骤5:完善信息 步骤6:保存测试计划 步骤7:查看结果 总结:JMeter测试计划要素 当我们第一次打开J ...

  4. 『动善时』JMeter基础 — 41、使用JMeter连接数据库(MySQL)

    目录 1.为什么要使用JMeter连接数据库 2.JMeter连接数据库的前提 3.JDBC连接配置组件界面介绍 4.JMeter连接数据库演示 (1)测试计划内包含的元件 (2)测试计划中添加链接数 ...

  5. 『动善时』JMeter基础 — 2、JMeter的安装和启动

    1.安装Java环境 由于JMeter是纯Java的桌面应用程序,因此它的运行环境需要Java环境,即需要安装JDK或JRE.(也就是安装JDK环境) 步骤简要说明: 下载并安装JDK 配置环境变量 ...

  6. 『动善时』JMeter基础 — 7、jmeter.properties文件常用配置

    目录 1.默认语言设置 2.配置默认编码格式 3.GUI图标放大比例设置 4.功能区工具栏图标大小设置 5.视图区目录树图标大小设置 6.内容区编辑字体设置 7.添加JMeter元素快捷键设置 8.捕 ...

  7. 『动善时』JMeter基础 — 27、通过JMeter函数助手实现参数化

    目录 1.测试计划中的元件 2.数据文件内容 3.函数助手配置 (1)函数助手的打开方式 (2)函数助手界面介绍 (3)编辑后的函数助手界面 4.HTTP请求组件内容 5.线程组元件内容 6.脚本运行 ...

  8. 『动善时』JMeter基础 — 47、JMeter的HTTP代理服务器详细介绍

    目录 1.HTTP代理服务器的添加 2.HTTP代理服务器界面详解 (1)State:状态 (2)Global Settings:全局设置 (3)Test Plan Creation:测试计划创建 ( ...

  9. 『动善时』JMeter基础 — 50、使用JMeter测试WebService接口

    目录 1.什么是WebService 2.WebService和SOAP的关系 3.什么是WSDL 4.测试WebService接口前的准备 (1)如何判断是WebService接口 (2)如何获取W ...

随机推荐

  1. P1603 斯诺登的密码(JAVA语言)

    //这题有点坑 题目背景 根据斯诺登事件出的一道水题 题目描述 题目描述 2013年X月X日,俄罗斯办理了斯诺登的护照,于是他混迹于一架开往委内瑞拉的飞机.但是,这件事情太不周密了,因为FBI的间谍早 ...

  2. RepVGG

    RepVGG: Making VGG-style ConvNets Great Again 作者:elfin   资料来源:RepVGG论文解析 目录 1.摘要 2.背景介绍 3.相关工作 3.1 单 ...

  3. 半监督学习方法(Semi-supervised Learning)的分类

    根据模型的训练策略划分: 直推式学习(Transductive Semi-supervised Learning) 无标记数据就是最终要用来测试的数据,学习的目的就是在这些数据上取得最佳泛化能力. 归 ...

  4. RabbitMQ 入门 (Go) - 3. 模拟传感器,生成数据并发布

    现在,我们需要模拟传感器,生成数据,并发布到 RabbitMQ. 建立传感器项目 在 GOPATH src 下建立文件夹 sensors,使用 go mod init 初始化,并创建 main.go. ...

  5. Python面向对象练习题

    1.模拟栈操作原理 先进后出 ​1.初始化(创建一个存储数据的列表) 2.进栈使用列表保存数据 ​ 3.出栈 使用列表删除数据 ​ 4.查看栈顶元素 切片获取列表最后一位数据 ​5.判断是否为空栈 6 ...

  6. 利用Vue实现一个简单的购物车功能

    开始学习Vue的小白,dalao多多指正 想要实现下面这个界面,包含总价计算.数量增加和移除功能 话不多说代码如下 <!DOCTYPE html> <html> <hea ...

  7. .Net Core发布到Linux下验证码失效处理方案详解

    .net Core 部署到在 CentOS7下后,验证码打不开,报The type initializer for 'Gdip' threw an exception.异常 运行含图片处理时发生异常: ...

  8. HTML5新增语法

    ##1.video1.简化版写法:兼容性差```<video src="" controls> </video>``` 2.视频标签标准语法(兼容处理)`` ...

  9. MySQL-一条sql语句的执行顺序

    手写: SELECT DISTINCT <select_list> FROM <left_table> <join_type> JOIN <right_tab ...

  10. Redis解读(2):Redis的Java客户端

    Redis的Java客户端 Redis不仅使用命令客户端来操作,而且可以使用程序客户端操作,其实配置和实现起来也非常容易. 现在基本上主流的语言都有客户端支持,比如Java.C.C#.C++.php. ...