我有一个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请求。
答案 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
函数。