内部控制器,而jmeter中的控制器

时间:2018-06-26 01:03:06

标签: jmeter

我有一个while控制器,它重复相同的请求直到满足条件。在此控制器内,我想根据while循环外GET请求提供的JSON response选择特定的HTTP请求。

因此,我的逻辑是设置一个while控制器(当前正在工作)

${__javaScript(parseInt(${counterApis})<=parseInt(vars.get("FirstNames_matchNr")),)}

其中具有一个JSR223预处理器,其中包含以下内容:

vars.put("TypeCode",vars.get("TypeCodes_"+vars.get("counterApis")));

想法很简单,while循环使用预处理器检查变量TypeCode的值(取决于JSON响应,可以是ADT,CHD或INF),然后使用此变量来根据此变量在特定的POST请求之间进行选择。

问题:由于某些原因,当我尝试在while控制器内添加IF CONTROLLER或SWITCH CONTROLLER时,脚本崩溃,无法访问任何POST请求。

它是这样的: If controller Switch Controller

2 个答案:

答案 0 :(得分:0)

如果您想在while循环内执行特定的代码块

您可以通过在If controller内使用while loop来做到这一点。

在您的while循环中添加if控制器..

对于ADT类型代码,您可以使用

${__javaScript(vars.get("TypeCode")=="ADT")}

该条件必须评估为true或false,因此如果您使用${TypeCode}=="ADT",则该条件无效

有关while循环的更多信息,请遵循this link

请告诉我是否有帮助。

答案 1 :(得分:0)

您使用了错误的JSR223测试元素。 JSR223预处理程序将在之前采样器中执行,因此您的Switch Controller根本不会收到必要的输入。

将JSR223预处理器更改为JSR223 Sampler,我相信您的脚本将按预期开始工作。如果您不想在测试结果中看到JSR223采样器,可以将以下行放在某个地方:

SampleResult.setIgnore()

还应考虑在您的While控制器中切换到__groovy() function,因为使用recommended就是the most performing scripting option

  

javaScript不是实现JMeter性能的最佳脚本语言。如果您的计划需要大量线程,建议使用__jexl3__groovy函数。