我有一个 http 请求 sampler1 并使用正则表达式提取器提取“JobID”值。现在,我有 http 请求 sampler2 来检查同一线程组中的作业状态,该线程组使用来自先前正则表达式提取器的“JobID”。 sampler2 有一个 while 循环控制器,条件为 ${__javaScript("${Status}"!="Ready",)} 这就是说继续执行采样器直到状态为就绪。变量“状态”再次使用与采样器 2 关联的常规表达式提取器获得。现在,问题是当我运行 1 个以上的线程时,一旦作业状态就绪,第二个采样器在第一次运行后停止执行,并且不会使用来自采样器 1 的下一个 JobID 执行。是因为 While 控制器吗?对此的任何投入都会有很大帮助。谢谢!
答案 0 :(得分:0)
当然不是。
如果您在 Thread Group 中有多次迭代,或者您的两个采样器都位于 Loop Controller 下,则当第二次迭代开始时,您的 ${Status}
变量的值为 Ready
,因此由于条件不满足,JMeter 不会进入 While 控制器。
如果您想运行多次迭代,您需要以某种方式重置 ${Status}
变量值,其中一种方法是使用 JSR223 Sampler 和以下代码: >
SampleResult.setIgnore()
vars.put('Status', 'Not ready')
示例设置:
在上面的代码片段中:
${Status}
变量设置为 Not ready
(有关 JMeter API 的更多信息,请参阅 Top 8 JMeter Java Classes You Should Be Using with Groovy 文章可用于 JSR223 测试元素的简写)