一篇文章,学会Jmeter模拟文件上传、下载操作

发表于:2022-1-24 09:11

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:佚名    来源:CSDN

  最近很多同学都在问Jmeter上传,下载文件的脚本怎么做?正巧这阵子忙完有时间,就来“折腾”一番,哈哈!现整理出来和大家分享,到底该怎么做?
  一、准备工作:
  ·上传接口一个(自行开发解决了)
  · 下载接口
  ps:没有困难创造困难也要上。
  · Jmeter4.0版本
  上传接口源码:
  /**
   
        * 文件上传
   
        */
   
       @RequestMapping(value =  "/fileUpload" , method = RequestMethod.POST)
   
       @ApiOperation(value =  "上传文件" , httpMethod =  "POST" )
   
       @ResponseBody
   
       public   String fileUpload(@RequestParam(value =  "file" , required =  false ) MultipartFile file) {
   
           if   (Objects.isNull(file)) {
   
               return   getMessage( "90110" ,  "上传文件不能为空!" );
   
           }
   
           String fileName = file.getOriginalFilename();
   
           String path =  "F:/upload" ;
   
           File dest =  new   File(path +  "/"   + fileName);
   
           if   (!dest.getParentFile().exists()) {  //判断文件父目录是否存在
   
               dest.getParentFile().mkdir();
   
           }
   
           try   {
   
               //保存文件
   
               file.transferTo(dest);
   
               return   getMessage( "90000" ,  "上传文件成功!" );
   
           }  catch   (IllegalStateException e) {
   
               // TODO Auto-generated catch block
   
               return   getMessage( "90555" ,  "上传文件失败!" );
   
           }  catch   (IOException e) {
   
               return   getMessage( "90555" ,  "上传文件失败!" );
   
           }
   
       }
  二、Jmeter做上传的脚本
  2.1、编写脚本流程
  首先添加一个线程组,然后在线程组里面添加一个http请求,因为是发送数据,所有是post请求,写好上传的地址,然后写好文件路径。
  1、添加线程组:右键测试计划,添加-Threads(Users)-线程组;
  2、添加一个http请求:右键线程组,添加-Sampler-HTTP请求;
  3、写好http请求中的url和路径,以及要上传的文件;
  4、添加一个查看结果树,查看接口调用结果。右键线程组,添加-监听器-查看结果树。
  2.2、脚本实例
  协议:http
  服务器名称:127.0.0.1
  端口号:8888
  请求类型:post
  路径:/fileUpload
  body:要选files_upload这个tab页,写文件路径,和参数名
  下面是脚本截图:
  2.3、运行脚本,查看结果
  看下面的图,运行结果,接口返回成功,再去我本地F盘(接口里写死的)下是否有文件,看一下,到底有没有成功。
  看下面的图,对应目录下已经有咱们刚才上传的文件了,及时间也对得上。
  可能遇到的坑:
  ps:此处为代码开发部分,感兴趣的同学可以了解下及解决方案参考。
  问题一:关于报错:
  Request”,”exception”:”org.springframework.web.multipart.support.MissingServletRequestPartException”,”message”:”Required request part ‘file’  is   not present”,”path”:”/excel/import/upload”}
   
  我错误的原因和解决方法:
   
  主要是由于前台传递mutipartFile,表单的名字是file,但是再feign调用的时候我使用的是requestPart(“file”). 因此无法传递。
  修改前端表单的文件名为file
  问题二:关于报错
  400 bad request: Required request part ‘file’  is   not present
   
  猜测通过@RequestParam(value = “file”, required =  false )这种方式来取参的话,file字段就是可选的了。
   
  这个错误大概是说没有file这个字段,而这个字段又是必须的,即使用了注释,如下面
   
  @RequestParam( "file" ) MultipartFile file
   
  那么就需要我们去检查下前端页面是否存在这个字段了
  问题三:关于报错
  org.apache.tomcat.util.http.fileupload.FileUploadException: the request was rejected because no multipart boundary was found
   
  不手动添加content-type后就行了:此时访问成功,去掉消息头多余的添加
  三、jmeter下载文件
  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和路径;
  4、添加beanshell,获取到返回的文件内容,保存到一个文件里面。右键线程组,添加-Sampler-BeanShellSampler;
  beanshell代码如下:
  importjava.io.*;
   
  byte []result=prev.getResponseData(); //这个是获取到请求返回的数据,prev是获取上个请求的返回
   
  Stringfile_name= "F:\\BaiDu.jpg" ; //代表存放文件的位置和文件名
   
  Filefile=newFile(file_name);
   
  FileOutputStreamout=newFileOutputStream(file);
   
  out .write(result);
   
  out .close();
  5、添加一个查看结果树,查看接口调用结果。右键线程组,添加-监听器-查看结果树。
  3.3、脚本实例
  协议:http
  服务器名称:a.hiphotos.baidu.com
  端口号:80 (提示,端口号默认是就是80,可以不用写哦)
  请求类型:get
  路径:
  /image/pic/item/4b90f603738da977b1e8c6c7ba51f8198718e313.jpg
  脚本截图如下:
  下面这个是beanshell里面的内容,也就是咱们保存文件的操作。
  3.4、运行脚本,查看结果
  看下面的图,运行结果,已经可以看到刚才这张图片了,而且请求都是成功的。
  咱们再去F盘根目录下看,文件已经存在F盘根目录下了。
  以上就是利用jmeter实现上传下载操作啦,感兴趣的同学可以自己动动手练习下!

  本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号