场景:
有一个接口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让脚本一直执行,此时的目录结构如

脚本就可以正常使用啦~