在上一篇文章【使用JMeter发送Post请求】中,我们只介绍了在参数选项页中添加数据,并且使用了两种提交数据类型application/x-www-form-urlencodedmultipart/form-data进行演示。

这篇文章我们说明如何使用文件上传选项页,实现Post请求上传文件。

1、用于演示的项目说明

Httpbin是一个使用Python + Flask编写的HTTP Request & Response Service项目,该服务主要用于测试 HTTP库,你可以向他发送请求,然后他会按照指定的规则将你的请求返回(查看你所发送请求中的信息)。

Httpbin支持HTTP/HTTPS请求,支持所有的HTTP动词,能测试HTTP请求和响应的各种信息,比如 cookieipheaders 和登录验证等。

Httpbin接口地址:http://httpbin.org/

2、测试计划内包含的元件

添加元件操作步骤

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

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

『动善时』JMeter基础 — 15、使用JMeter实现文件上传-LMLPHP

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

3、HTTP请求界面内容

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

『动善时』JMeter基础 — 15、使用JMeter实现文件上传-LMLPHP

关于参数编辑如下:

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

上传文件选项页内容:

『动善时』JMeter基础 — 15、使用JMeter实现文件上传-LMLPHP

说明

  1. 上传文件时,需要勾选Use multipart/form-data for post选项。(我个人实践中发现,在上传文件选项页编辑参数后,Post请求默认会以multipart/form-data数据格式进行提交数据,勾不勾选没有区别。但是工作中按照接口文档来操作,如果没有说明最后好勾选上。)
  2. 上传文件选项页中,需要填写三个参数:
    1)文件名称:输入上传文件的路径;(注意:通过以JMeter脚本所在目录为目标点,可以使用文件的相对路径。)
    2)参数名称:自定义变量名,例如Filedata(被赋值于文件内容);
    3)MIME类型:例如application/octet-stream
  3. 参数选项页和消息体数据选项页只能选择其一。

(2)编写接口所需要的其他数据

我们在上传文件的同时,也可以在参数选项页中添加接口需要其他参数:

『动善时』JMeter基础 — 15、使用JMeter实现文件上传-LMLPHP

4、查看结果

执行脚本后,结果如下图所示:

『动善时』JMeter基础 — 15、使用JMeter实现文件上传-LMLPHP

我们可以看到文件中的内容和Form表单中的数据,都发送出去了。

5、总结

在日常工作中,如果接口写的很详细,我们就完全按照接口文档的要求编写JMeter脚本。

如果接口中有部分内容写的不明确,我们可以按照通用的请求规范来编写JMeter脚本。

如果面对一个项目没有接口文档,那我们就需要使用工具抓取请求,来查看该接口具体的内容,当然可以找开发沟通了解。

6、补充:MIME类型简介

(1)MIME说明

MIME(Multipurpose Internet Mail Extensions):多用途网络邮件扩展类型,可被称为Media typeContent type

MIME用于设定某种类型的文件,当被浏览器打开的时候,需要用什么样的应用程序。多用于HTTP通信和设定文档类型例如HTML。

即:之所以叫多用途网络邮件扩展类型,因为它最早被用于电子邮件系统,后用于浏览器。

概括的说:MIME类型即Content-Type的值,服务端会检测这个Content-Type的值。

(2)常见类型

如下表:

05-22 00:08