zoukankan      html  css  js  c++  java
  • 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="C:\Users\bjniuhanyang\Desktop\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盘根目录下了

     以上就是利用jmeter实现上传下载操作啦,感兴趣的同学可以自己动动手练习下

    优秀不够,你是否无可替代

    软件测试交流QQ群:631646987,期待你的加入!!

    欢迎关注我的微信公众号:软件测试君


    自动化测试技术交流
     
    分类: Jmeter
     
    好文要顶 关注我 收藏该文  
     
  • 相关阅读:
    LeetCode 242. Valid Anagram (验证变位词)
    LeetCode 205. Isomorphic Strings (同构字符串)
    LeetCode 204. Count Primes (质数的个数)
    LeetCode 202. Happy Number (快乐数字)
    LeetCode 170. Two Sum III
    LeetCode 136. Single Number (落单的数)
    LeetCode 697. Degree of an Array (数组的度)
    LeetCode 695. Max Area of Island (岛的最大区域)
    Spark中的键值对操作
    各种排序算法总结
  • 原文地址:https://www.cnblogs.com/lnn123/p/10223501.html
Copyright © 2011-2022 走看看