jmeter-文件上传和下载文件

jmeter-文件上传和下载文件

文件上传

一、测试功能:

1、导入excel文件。

二、重点步骤:

1、Fiddler抓取入参,其中BODY信息如下:

Name:Content-Disposition: form-data; name="CONTENT"; filename="200SKU.xlsx"

Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet

Value:<file>

注:其中name为参数名称,Content-Type为MIME类型

2、jmeter添加sample之HTTP请求,填写内容如下图:

三、注意事项

1、在http请求过程中上传附件(Excel文件、图片、安装包、视频文件等)虽然基本上Content-Type为:multipart/form-data,但Content-Type也有不一样的,一般情况下Excel文件的Content-Type为:application/vnd.openxmlformats-officedocunment,spreadsheetml.sheet;图片Content-Type为: image/jpeg,app包Content-Type为:application/octet-stream。最终填写的值要以抓包中的入参信息为准。

2、Request Headers中的Content-Type在此HTTP请求中不放在Parameters中维护,因为它是动态的信息。

3、喜欢粘贴复制HTTP请求的朋友们要注意,除了上传附件的请求中要勾选 Use multipart/form-data for POST和Browser-compatible headers,下面的请求就要去勾选啦!并且如果HTTP信息头管理器是公用的话要注意区别开来,否则脚本会报错。

4、Usemultipart/form-data for POST:当发送HTTP POST请求时,使用Use multipart/form-data方法发送,可用它做文件上传,这个属性是与方法POST绑定的。这里需要勾选此项。

5、Browser-compatibleheaders:浏览器兼容模式,如果使用了Use multipart/form-data for POST,这里建议勾选此项。

6、按以上方式维护HTTP请求,执行脚本,如果报错且提示“导入的数据为空”,那么需要把Implementation选择为“HttpClient4”或者“Java”。选择哪一个需要用Badboy录制一下后导出成.jmx文件,再用jmeter打开查看。

7、Implementation中:

Java:使用的http是使用的JAVA JVM提供的方法,有相关的限制:1)连接如何重用在请求中没有控制;2)当jmeter释放了一个请求后,在同样的进程中可能不会再使用了;3)只使用于单进程模式;4)HTTPS代理请求有两个bug没存在;5)不支持虚拟主机;6)不支持相关的方法;7)不支持存储证书的请求。

HttpClient4:使用Apache HttpClient 4.1部件。

空白:使用HTTP默认请求中的配置或jmeter.properties中jmeter.httpsample中的配置。

 

文件下载

3.1准备工作

图片的url是:http://a.hiphotos.baidu.com/image/pic/item/4b90f603738da977b1e8c6c7ba51f8198718e313.jpg

3.2 编写脚本流程

      首先添加一个线程组,然后在线程组里面添加一个http请求,因为是获取数据,所有是get请求,写好下载的地址

              1、添加线程组 :右键测试计划,添加-Threads(Users)-线程组;

              2、添加一个http请求:右键线程组,添加-Sampler-HTTP请求;

              3、写好http请求中的url和路径;

        不过这个是下载脚本,下载的话,有一步是要把文件保存到咱们本地的,这个jmeter没有现成的东西可以用,就得咱们自己写beanshell来实现,把文件保存到本地。

        当然你如果要写beanshell的话,你得会它的语法,它就是java写的。不过也不用愁不会写java咋整,这个保存文件的是死格式就这么写,记住就行了,需要下载的时候复制过去就行。

              4、添加beanshell,获取到返回的文件内容,保存到一个文件里面。右键线程组,添加-Sampler-BeanShell Sampler,beanshell代码如下:

import java.io.*;
 
byte[] result = prev.getResponseData();  //这个是获取到请求返回的数据,prev是获取上个请求的返回
 
String file_name = "C:\Users\bjniuhanyang\Desktop\BaiDu.jpg"; //代表存放文件的位置和文件名
 
File file = new File(file_name);
 
FileOutputStream out = new FileOutputStream(file);
 
out.write(result);
 
out.close(); 

 5、添加一个查看结果树,查看接口调用结果。右键线程组,添加-监听器-查看结果树;

   3.3 脚本实例

       协议:http
       服务器名称:a.hiphotos.baidu.com

       端口号:80 (提示,端口号默认是就是80,可以不用写哦)
       请求类型:get

       路径:/image/pic/item/4b90f603738da977b1e8c6c7ba51f8198718e313.jpg

     脚本截图如下:

 

      下面这个是http请求里面的,也就是咱们获取图片的

      

 

      下面这个是beanshell里面的内容,也就是咱们保存文件的操作。

     

      2.4 运行脚本,查看结果

          看下面的图,运行结果,已经可以看到刚才这张图片了,而且请求都是成功的。

 

  咱们再去桌面上看,文件已经存在桌面上了。

  

原文地址:https://www.cnblogs.com/jingdenghuakai/p/12360464.html