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 运行脚本,查看结果
看下面的图,运行结果,已经可以看到刚才这张图片了,而且请求都是成功的。
咱们再去桌面上看,文件已经存在桌面上了。