while循环逻辑控制器+配置元件计数器的用法

Posted FanF

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了while循环逻辑控制器+配置元件计数器的用法相关的知识,希望对你有一定的参考价值。

一、在线程组下添加逻辑控制器While Controller

二、在逻辑控制器While Controller下添加Sample,BeanShell Sampler ,

三、逻辑控制器While Controller下添加配置元件,计数器

四、在线程组下添加监听器,察看结果树:

注意while中设置的是$__javaScript("$number"<"4"),而请求出现了4次,是因为进入循环后,计数器才开始计数,到第四次循环之前,计数器的值为3,进入第四次循环后,计数器的值为4,所以有四次请求

 

注意,当不定义number变量的时候,while中$__javaScript("$number"<"4"),永远都会循环执行,如图;所以前面的循环四次,第一次进入循环时,其实number是没有定义的,但是也会执行循环;

 

转载链接:https://www.cnblogs.com/lelexiong/p/9171931.html

Jmeter - 具有计数器配置元件的控制器

我有一个while控制器,在将用户注销之前等待某个正则表达式出现在响应中。但是,由于先前请求的超时,这偶尔会进入无限循环,从而使数据偏斜。我正在设置此请求,以便它在退出循环之前仅发送5次并将用户注销。

在搜索答案之后,似乎$ {__ counter()}变量或Counter Config Element都是解决方案,但似乎都没有像我期望的那样工作。

这是我到目前为止所得到的:

While Controller (${__javaScript( "${DONE_A}" != "Thank you for your order" || ${counter} < 5;)}  
    Counter (set to 5, increment 1)  
    Constant Timer (2000 ms)  
    GET /checkout/confirmation  
    ^RegExp Extractor (DONE)

Logout

谢谢!

答案

我可以看到你的脚本有几个问题:

  1. 在第一次迭代期间,计数器值为NaN,您需要通过ie User Defined Variables声明它或者在您的条件中添加“Not a Number”检查
  2. 您不能在__JavaScript函数中将变量引用为${counter}。如果你需要解决它,你需要用引号括起变量(就像你为你的DONE_A变量做的那样。如果你需要像变量那样处理变量 - 请使用parseInt()函数

鉴于第2点,我的期望是你的While控制器子句根本不起作用,这就是为什么你得到一个无限循环。

这个应该适合你的场景:

${__javaScript(isNaN(parseInt("${counter}")) || parseInt("${counter}") < 5 && "${DONE_A}" != "Thank you for your order",)}

以上是关于while循环逻辑控制器+配置元件计数器的用法的主要内容,如果未能解决你的问题,请参考以下文章

JMETER_从入门到放弃系列

Jmeter:使用 While Controller 进行失败的请求重试,ThreadGroup 循环计数不起作用

jmeter控制器

jmeter5.2版本 配置元件之逻辑控制器详解

jmeter foreach控制器 怎样确认循环到第几次了

025 程序的循环结构