jmeter:根据当前时间变更参数值
场景:
有一个接口A,它的参数为num,num必传
现在希望在每天的0点到12点每隔1min访问接口A,其中9点前num=0,9点到12点前num=100,除此外的时间不访问接口
直接上实现方法:
- 添加线程
- 在线程下添加http取样器,并先将接口调通
- 在线程下添加BeanShell Sampler然后在下级添加一个BeanShell PreProcessor和一个定时器,并设置好定时器的时间。(这里BeanShell Sampler的作用只是为了在发送http请求前先执行BeanShell PreProcessor得到我们要的参数。)
- 修改BeanShell PreProcesso的脚本,这里我们将完成我们要实现的功能:根据当前时间变更参数值(脚本参考如下),写完脚本,线程中就可以通过${num}获取该参数了。
package com.isea.java; String now= "${__timeShift(HH,,,,)}"; Integer hour= new Integer(hour); if (hour<9){ vars.put("num","0"); } else if(hour<12){ vars.put("num", "100"); } else{ vars.put("num", "none"); }
- 在线程下添加if控制器,并将我们的接口取样器放置在if控制器下,给if控制器中加入判断如下(这就实现了指定时间不发送请求的功能)

现在我们来实现每隔1min像服务器发送请求的功能:
- 在线程下添加:循环控制器Loop Controller,并将刚刚的BeanShell Sampler和if控制器放到循环控制器下。这里我勾选forever让脚本一直执行,此时的目录结构如
![]()
脚本就可以正常使用啦~


浙公网安备 33010602011771号