jmeter - 带有 while 循环控制器的第二个采样器在第一个线程后停止
问题描述
我有一个 http 请求 sampler1 并使用正则表达式提取器提取“JobID”值。现在,我有 http 请求 sampler2 来检查同一线程组中的作业状态,该线程组使用以前正则表达式提取器中的“JobID”。sampler2 有一个带有条件 ${__javaScript("${Status}"!="Ready",)} 的 while 循环控制器,也就是说继续执行采样器,直到状态为 Ready。使用与 sampler2 关联的常规表达式提取器再次获得变量“状态”。现在,问题是当我运行超过 1 个线程时,第二个采样器在第一次运行后停止执行,一旦作业状态为就绪,并且不会使用来自 sampler1 的下一个 JobID 执行。是因为While控制器吗?对此的任何投入都会有很大帮助。谢谢!
解决方案
当然不是。
如果您在Thread Group中有多个迭代,或者您的两个采样器都位于Loop Controller下,则当第 2 次迭代开始时,您的${Status}
变量的值为 ,Ready
因此 JMeter 不会进入 While 控制器,因为条件不满足。
如果要运行多次迭代,则需要以某种方式重置${Status}
变量值,其中一种方法是使用JSR223 Sampler和以下代码:
SampleResult.setIgnore()
vars.put('Status', 'Not ready')
示例设置:
在上面的代码片段中:
- 第一行从 Listeners/.jtl 结果文件中删除了 JSR223 采样器,(您对它的时间不感兴趣,是吗?)
- 第二行将
${Status}
变量设置为Not ready
使用JMeterVariables类实例的vars简写(有关可用于 JSR223 测试元素的 JMeter API 简写的更多信息,请参阅您应该在 Groovy 中使用的 8 个 JMeter Java 类文章)
推荐阅读
- c# - C# 控制台应用程序使用 MachineKey
- redux - 使用 redux-act 时如何设置 reducer 名称
- python - 我无法在 networkx 中绘制 (i, i) 形式的边缘
- puppet - hiera.yaml 的查找配置类型错误,条目“层次结构”索引 0 需要一个结构值,得到字符串
- python - 在 Windows 上使用 PyPy 安装 SciPy
- arrays - Swift:将所有按钮添加到数组中
- c# - 将实时音频发送到 bing Speech API
- javascript - 如何使用 Javascript 单击 div 的 svg 元素?
- php - 在 PHP 中使用 preg_Replace() 函数时出现问题
- python - 为什么要使用 __xxx__ 定义函数的属性?