下面是我的代码,我试图通过一组状态循环,如果状态等于N,则中断。并将EpisodeId保存在同一索引处。(在beanshell后处理器中使用JavaScript)
var i;
var count = vars.get("AuthStatus_matchNr");
var EpisodeID;
log.info("Count of Status:"+count)
for(i=0;i<=count;i++){
var AuthStatus_i;
AuthStatus_i = vars.get("AuthStatus_"+i);
log.info("Auth:"+AuthStatus_i);
if (AuthStatus_i == "N"){
EpisodeID = vars.get("corr_EpisodeID_"+i);
break;
}
else{
i++;
}
}
log.info("EpisodeID:"+EpisodeID)
vars.put("EpisodeID",EpisodeID);
但是我的循环并没有像预期的那样工作。循环运行2次迭代,并在找到N状态之前中断。下面是日志响应
Capture 'N' Status EpisodeID: Count of Status:3
Capture 'N' Status EpisodeID: Auth:null
Capture 'N' Status EpisodeID: Auth:A
Capture 'N' Status EpisodeID: EpisodeID:undefined
2条答案
按热度按时间zzzyeukh1#
您需要删除此位:
因为你已经在for循环中执行增量。
另外,请注意,根据JMeter最佳实践,您应该使用JSR223测试元素和Groovy语言进行脚本编写,因此考虑迁移。
更多信息:Apache Groovy: What Is Groovy Used For?
weylhg0b2#
我知道问题在哪了。在JavaScript中,数组和列表是从零开始的,这意味着索引从0开始,最后一个索引是count - 1。因此,您需要将条件i <= count修改为i < count,以便遍历AuthStatus数组中的所有元素。
正确的做法应该是这样的:
现在基本上循环将遍历所有元素,直到找到“N”状态并分配相应的EpisodeID。