上传文件

在调试上传或导入文件的接口时,首先需要和前端沟通上传文件的MIME类型,一般来说,如果只上传某一类文件,则MIME会有对应的类型,但如果上传的文件没有类型限制,一般会采用:multipart/form-data;

下面是一个导入SN白名单的接口,使用的MIME类型为:multipart/form-data,接口具体信息如下:

导入白名单接口地址:172.16.160.206:8090/AuthServer/api/whitelist/import
请求方式:POST

请求参数:
Int: groupId
File:uploadFile

返回数据:
{
“code”: 0,
“msg”: “SUCCESS”,
“data”: null,
“timestamp”: 1524657294334
}

1.先新建一个http请求,选择HTTP请求方式为POST,输入接口访问路径,内容编码输入:utf-8,如图:

Jmeter 导入 java jmeter导入文件接口_上传

2.在参数tab页中输入groupId及其取值;

Jmeter 导入 java jmeter导入文件接口_上传文件_02

3.切换到文件上传tab页,文件名称处输入文件的存放路径,我这里放的是Linux下的路径,如果是windows下的路径则直接复制路径过来即可,如:E:\project\authorServer\V2\apitest\Interface test\11.xlsx

4.参数名称输入入参的名称:uploadFile,MIME类型输入:multipart/form-data,勾选“对POST使用multipart/form-data”;

Jmeter 导入 java jmeter导入文件接口_上传文件_03

5.所有信息录入完毕后,执行接口,返回数据正确,则文件上传成功。

6.需要特别注意的是,如果需要用到HTTP信息头管理器,里面不要配置Content_Type,将该参数删掉,否则会造成导入或上传不成功;

Jmeter 导入 java jmeter导入文件接口_数据_04

下载文件

下载文件相对来说比较麻烦点,需要使用BeanShell后置处理程序处理导出的文件。放到Linux系统下进行jenkins集成时,因为导出来的文件显示乱码,所以会造成构建失败。

下面着眼于将jmeter接口文件放在Linux系统下的jenkins中进行构建来讲解。

1.在http请求下添加BeanShell后置处理程序,通过下面的代码将结果处理为:导出成功或导出失败,可以方便的进行断言;

Jmeter 导入 java jmeter导入文件接口_上传_05

Jmeter 导入 java jmeter导入文件接口_Jmeter 导入 java_06

2.将断言设置为:导出成功 来进行断言;

Jmeter 导入 java jmeter导入文件接口_上传文件_07

代码如下:

  1. String=.getResponseCode();
  2. if(resPonseCode.equals("200")){
  3. ResponseData=.getResponseData();
  4. StringResponseDataType=ResponseData.getClass().getName();
  5. if(ResponseDataType.equals("[B")){
  6. byte[]=ResponseData;//这个是获取到请求返回的数据,prev是获取上个请求的返回
  7. .warn(result.getClass()+"");
  8. String="/home/jenkins_home/workspace/AuthServer-Interface-test/Interface test/jmeterDownloadFiles/snwhitelist_${__time(yyyyMMddHHmmss,)}.xlsx";//代表存放文件的位置和文件名
  9. File=newFile(file_name);
  10. FileOutputStreamout=newFileOutputStream(file);
  11. out.write(result);
  12. out.close();
  13. if(file.exists()){
  14. //根据实际情况各业务自己判断是否需要补充对导出文件的内容验证,此处暂时只判断文件是否存在
  15. .setResponseData("导出成功","UTF-8");
  16. .warn("导出成功");
  17. }
  18. else{
  19. .setResponseData("导出失败","UTF-8");
  20. .warn("导出失败");
  21. }
  22. }
  23. }