减少 Jmeter 中的计时器

Reducing Timer In Jmeter

我需要在 Jmeter 中实现以下操作

while(调用API变量且定时器小于30秒) -- 调用 API -- 提取响应 -- 如果 --> 响应是 "Still waiting to finish" 那么什么都不做。 -- 否则 --> 验证响应 ---> 将 callAPIVariable 设置为 false

我需要循环 while 循环直到 30 秒或直到调用API变量设置为 false

我可以实现 while 循环和所有功能,但我不知道如何将计时器添加到 while 循环

您可以将运行时设置为 30

添加为父项 Runtime Controller

Runtime Controller controls how long its children how long its children will run. Controller will run its children until configured Runtime(s) is exceeded.

只需右键单击您的 While Controller -> Insert Parent -> Logic Controller -> Runtime Controller

  1. 在While Controller前添加JSR223 Sampler,将以下代码放入"Script"区:

    vars.putObject('start', System.currentTimeMillis())
    SampleResult.setIgnore()
    
  2. 使用下面的表达式作为While Controller的条件:

    ${__groovy((vars.get('callAPIVariable').equals('true') && (System.currentTimeMillis() - (vars.getObject('start') as long) < 30000)),)}
    

就是这样,上面的设置允许 While Controller 循环直到 callApiVariable 值为 true 或 30 秒过去(无论先到什么)

vars 是 shorthand 用于 JMeterVariables class instance, it provides read/write access to all the JMeter Variables in current thread (virtual user) context. Check out Top 8 JMeter Java Classes You Should Be Using with Groovy article for more details on JMeter API shorthand 可用于 Groovy 脚本