之前写过一些文章讲了Groovy如何在JMeter中协助测试:

下面分享一下Groovy如何在JMeter修改请求参数,这个在正常测试中用处还是很广的,跟设置变量不一样,很多参数可能需要校验签名,而且每一次请求的参数也不尽相同。需要在设置完请求参数后,然后用程序统一处理一下。比如计算参数签名、加密明文、从数据库中取值等等。

  • 首先新建一个简单的线程组和一个简单的请求:

用Groovy处理JMeter中的请求参数_json

  • 添加JSR223 预处理程序(后置处理程序需要下一次请求)

用Groovy处理JMeter中的请求参数_性能测试_02

脚本内容:

sampler.addArgument("name","data");log.info(sampler.getArguments().toString())

经过测试这个方法对于get和post请求均有效,包括post请求的不同参数类型。

  • 控制台输出

这里只发get请求的控制台输出,多余的输出已经删除了。

2020-03-04 23:24:23,239 INFO o.a.j.e.StandardJMeterEngine: Running the test!2020-03-04 23:24:23,239 INFO o.a.j.s.SampleEvent: List of sample_variables: []2020-03-04 23:24:23,240 INFO o.a.j.g.u.JMeterMenuBar: setRunning(true, *local*)2020-03-04 23:24:23,358 INFO o.a.j.e.StandardJMeterEngine: Starting ThreadGroup: 1 : 线程组2020-03-04 23:24:23,358 INFO o.a.j.e.StandardJMeterEngine: Starting 1 threads for group 线程组.2020-03-04 23:24:23,358 INFO o.a.j.e.StandardJMeterEngine: Thread will continue on error2020-03-04 23:24:23,359 INFO o.a.j.t.ThreadGroup: Starting thread group... number=1 threads=1 ramp-up=1 perThread=1000.0 delayedStart=false2020-03-04 23:24:23,361 INFO o.a.j.t.ThreadGroup: Started thread group number 12020-03-04 23:24:23,361 INFO o.a.j.e.StandardJMeterEngine: All thread groups have been started2020-03-04 23:24:23,361 INFO o.a.j.t.JMeterThread: Thread started: 线程组 1-12020-03-04 23:24:23,456 INFO o.a.j.m.J.JSR223 预处理程序: t=FunTester()&s=funt3est1583335463413()&name=data()2020-03-04 23:24:23,628 INFO o.a.j.t.JMeterThread: Thread is done: 线程组 1-12020-03-04 23:24:23,630 INFO o.a.j.t.JMeterThread: Thread finished: 线程组 1-12020-03-04 23:24:23,630 INFO o.a.j.e.StandardJMeterEngine: Notifying test listeners of end of test2020-03-04 23:24:23,631 INFO o.a.j.g.u.JMeterMenuBar: setRunning(false, *local*)
  • 查看结果树

下面展示三种情况get请求、post请求json参数、post请求表单参数的请求体信息:

用Groovy处理JMeter中的请求参数_post请求_03用Groovy处理JMeter中的请求参数_线程组_04用Groovy处理JMeter中的请求参数_json_05


  • 郑重声明:文章首发于公众号“FunTester”,禁止第三方(腾讯云除外)转载、发表。

技术类文章精选

无代码文章精选


用Groovy处理JMeter中的请求参数_性能测试_06用Groovy处理JMeter中的请求参数_json_07