用Groovy处理JMeter中的请求参数

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

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

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

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

脚本内容:

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 error
2020-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=false
2020-03-04 23:24:23,361 INFO o.a.j.t.ThreadGroup: Started thread group number 1
2020-03-04 23:24:23,361 INFO o.a.j.e.StandardJMeterEngine: All thread groups have been started
2020-03-04 23:24:23,361 INFO o.a.j.t.JMeterThread: Thread started: 线程组 1-1
2020-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-1
2020-03-04 23:24:23,630 INFO o.a.j.t.JMeterThread: Thread finished: 线程组 1-1
2020-03-04 23:24:23,630 INFO o.a.j.e.StandardJMeterEngine: Notifying test listeners of end of test
2020-03-04 23:24:23,631 INFO o.a.j.g.u.JMeterMenuBar: setRunning(false, *local*)

  • 查看结果树

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


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

技术类文章精选

无代码文章精选

posted @ 2020-03-06 09:20  FunTester  阅读(759)  评论(0编辑  收藏  举报