jmeter:根据当前时间变更参数值

场景:
有一个接口A,它的参数为num,num必传
现在希望在每天的0点到12点每隔1min访问接口A,其中9点前num=0,9点到12点前num=100,除此外的时间不访问接口
 
直接上实现方法:
 
  1. 添加线程
  2. 在线程下添加http取样器,并先将接口调通
  3. 在线程下添加BeanShell Sampler然后在下级添加一个BeanShell PreProcessor和一个定时器,并设置好定时器的时间。(这里BeanShell Sampler的作用只是为了在发送http请求前先执行BeanShell PreProcessor得到我们要的参数。)
  4. 修改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");        
    }
  1. 在线程下添加if控制器,并将我们的接口取样器放置在if控制器下,给if控制器中加入判断如下(这就实现了指定时间不发送请求的功能)

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

posted @ 2021-02-27 16:52  之凡  阅读(326)  评论(0)    收藏  举报