问题JSR223转移了它的处理。在第一次ForEach迭代中,我期望JSR223生成一个给定值,但是我在接下来的迭代的调试后处理器中看到了该期望值。为什么会发生这种情况?
场景我有一组公司(线程组)。每个公司有一组商店(ForEach #1)。每个商店有一组“位置组”(ForEach #2)。每个位置组有自己的类型。
Scenario outline
位置组类型是一个数值,从1到12。假设ForEach控制器迭代这些位置组时生成以下类型序列:6、9、5、11、7、12、10和JSR223的代码如下:
if (vars.get("locationGroupType") == "6"){
log.info("Store:" + vars.get("anUnit"))
log.info("location group ID:" + vars.get("aLocationGroupId"))
vars.put("aux", "SIX")
log.info("location group type:" + vars.get("locationGroupType"))
}
if (vars.get("locationGroupType") == "9"){
log.info("Store:" + vars.get("anUnit"))
log.info("location group ID:" + vars.get("aLocationGroupId"))
vars.put("aux", "NINE")
log.info("location group type:" + vars.get("locationGroupType"))
}
我希望aux在第一次迭代时为6,然后在第二次迭代时为9。
输出这是JSR223到控制台的输出:Console output您可以看到存储区292的位置组ID为3803,其类型值为6。但此信息不正确。
位置组id 3803的请求输出,其类型值为9:location group 3803 response调试后处理器转储,我可以看到'aux'设置为SIX:debug postprocessor
奇怪的是,对3803的前一个请求是类型值为6的请求,而这正是我期望aux为SIX的地方:Response for 3635 where the type value 6 is found并且3635的调试后处理器显示“aux”为空:enter image description here
1条答案
按热度按时间bxgwgixi1#
如果计划使用所有这些值:
6, 9, 5, 11, 7, 12, 10
它是better,用于switch语句,而不是多个if。这是不是一个复制粘贴问题,你的代码不应该看起来像:
否则我可以想到以下几个原因:
关于JMeter中Groovy脚本的更多信息:Apache Groovy: What Is Groovy Used For?