jmeter循环控制器和计数器的结合使用
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jmeter循环控制器和计数器的结合使用相关的知识,希望对你有一定的参考价值。
参考技术A 先在需要的接口下面添加一个json提取器,获取全部需要的值[*]代表取全部 Match NO -1 表示获取全部
添加一个循环控制器,这边的值是根据前面json提取器里面所有的总和
格式:$自定义变量名_matchNr
添加计数器
在循环控制器内添加http请求, 使用$__V(id_$num)
数组有几个值 他这边就会运行多少次不用的接口
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
谢谢!
答案
我可以看到你的脚本有几个问题:
- 在第一次迭代期间,计数器值为
NaN
,您需要通过ie User Defined Variables声明它或者在您的条件中添加“Not a Number”检查 - 您不能在__JavaScript函数中将变量引用为
${counter}
。如果你需要解决它,你需要用引号括起变量(就像你为你的DONE_A
变量做的那样。如果你需要像变量那样处理变量 - 请使用parseInt()函数
鉴于第2点,我的期望是你的While控制器子句根本不起作用,这就是为什么你得到一个无限循环。
这个应该适合你的场景:
${__javaScript(isNaN(parseInt("${counter}")) || parseInt("${counter}") < 5 && "${DONE_A}" != "Thank you for your order",)}
以上是关于jmeter循环控制器和计数器的结合使用的主要内容,如果未能解决你的问题,请参考以下文章