jmeter 上传文件并在系统中生成接口用例示例

对于jmeter涉及到的功能模块点

http请求默认值

http cookie 管理器

http请求

正则表达式提取器

http信息头管理器

While Controller

用户参数

Debug Sampler

如果(If)控制器

查看结果树

接下来让我们开始介绍操作步骤

1,创建线程组

2,创建HTTP请求默认值

填写内容:协议、服务器名称或IP、端口号------这些内容按规则正常填写ok

3,HTTP cookie 管理器

设置:cookie policy :compatibility-----其他保持默认即可

4,创建HTTP请求,作登录操作,里面的具体设置,我就不一一讲解了,如果有不明白的可以参考

Jmeter 对于登录带有csrf防跨域的登录方法总结

5,提取token值,用正则表达式从响应回来的登录成功页进去提取出来,也应系统而异,大部分是在登录成功页


上面是一些接下来需要用到的设置,接下来开始涉及逻辑的步骤操作

6,上传文件的流程是,选择文件,文件创建,文件上传,上传完成

选择文件

  • 创建http请求,方法、路径、comtent encoding:utf-8 这个是为了防止上传的文件名是汉字,出现乱码
  • Files Upload 里面的内容 文件名称:是你文件存储的位置。 参数名称:填写file就行。 MIME类型:application/vnd.ms-excel
  • Parameters里面的内容:此请求的参数依次填写即可
  • jmeter 上传文件并在系统中生成接口用例示例
  • 文件创建,它需要上个请求响应回来的pool_id值作为本次请求的参数,所以需要提取,并在这里引用${pool_id}
  • HTTP信息头管理器X-CSRF-Token、X-Requested-With,如果你的请求头中也有这两个,也需要依次填写,原因是因为这属于ajax请求需要的
  • jmeter 上传文件并在系统中生成接口用例示例
  • jmeter 上传文件并在系统中生成接口用例示例  
  • 文件上传-------上传完成,这里需要考虑进行循环判断,如何算上传完成?我在这里选择了While Controller来完成这个操作
  • 首先创建上传的HTTP请求,请求参数进行填写,然后运行,查看结果树显示只有一个运行结果,并且不是已完成,这时我们添加一个While Controller,条件写${__javaScript("${state}"!="finished")}****意思是当状态不是finished的时候跳出循环,你可能会有疑问,运行结果从一开始就不是finished,为什么不跳出循环,原因是While Controller会一直运行,直到条件(Condition)为false,这样就可以达到循环到状态为已完成,跳出循环,这个时候文件就上传完成了

7,生成文件的流程是,开始生成,生成中,生成完成||  此时也涉及到状态的循环判断,需要用到While Controller,此时需要注意一下:当多个循环条件在同一个线程组中使用时,需要将上一个的循环结果进行更新,以便下一个循环可以正确拿到新的结果进行判断是否进入循环,根据开发给解决办法就是将HTTP请求先提前运行一次,然后再添加一个一样的请求到While Controller中进行循环,例如截图中的query-pool-task,他们两个是一模一样的两个请求

  • jmeter 上传文件并在系统中生成接口用例示例
  • 创建一个HTTP请求,填写请求参数,然后添加While Controller,因为我的上传文件和生成文件的的判断条件都是用状态进行判断,这样无法进行区分,所以我需要在生成的这个请求中添加一个用户参数,来区别于上传的循环条件
  • 用户参数:设置名称和用户值
  • jmeter 上传文件并在系统中生成接口用例示例
  • 循环条件${__javaScript("${state}"!="finished" && "${rr}"=="1")}加上&&,就是为了做区分的

jmeter 上传文件并在系统中生成接口用例示例

8,生成后,页面需要跳转到一个列表,此时我们需要一个如果(If)控制器 ,如果上一个接口的文件生成完成,执行下一个接口,如果没有,则不执行此接口,条件"${status}"=="finished"

这个时候运行就OK了,完成了上传生成了,中间可以用Debug Sampler进行调试,具体情况具体对待????

希望可以帮助到初学的大家哦,一起加油