zoukankan      html  css  js  c++  java
  • 一篇文章,学会jmeter模拟文件上传、下载操作

    最近很多同学都在问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实现上传下载操作啦,感兴趣的同学可以自己动动手练习下!(1079636098)软件测试学习群里一起讨论交流从此不再孤单。

     -  End  -

  • 相关阅读:
    Python之从头开始建立项目流程
    Python之建立APP流程以及SVN 的使用
    python之继承
    Python之实例对象的增删改查
    Python之类属性的增删改查
    read big file
    python minus 3 days or n days
    movie
    pyqt convert ui file to py file
    pyqt4 borderless window
  • 原文地址:https://www.cnblogs.com/cemaxueyuan/p/13154915.html
Copyright © 2011-2022 走看看