如何在beanshell后处理器中设置Jmeter Loop Controller中的动态值?

时间:2017-06-21 11:06:18

标签: jmeter

Bean-shell后处理器代码:

int totalElements= Integer.parseInt(vars.get("totalElements"));
vars.put("totalElements", String.valueOf(totalElements));

在循环控制器中,我使用了以下这些,但无法获得此值。

${__javaScript(parseInt(${totalElements})}; 
${__javaScript(parseInt("${totalElements}"))};
${__V(totalElements)};
${totalElements}; 

2 个答案:

答案 0 :(得分:0)

尝试不带分号的变量名:

enter image description here

另一个问题是,如果由于某种原因未定义变量totalElements,则语句vars.get("totalElements")将返回null,解析Integer.parseInt(null)将导致异常,这将导致异常导致采样器故障。如果这是一个理想的行为,那很好,但如果没有,你可以这样做:

String value = vars.get("totalElements");
int totalElements = (value != null) ? Integer.parseInt(value) : 0;
vars.put("totalElements", String.valueOf(totalElements));

因此,如果无法检索变量,totalElements将设置为0,因此循环将不会运行。但是采样器也不会失败。

答案 1 :(得分:0)

我得到了这个问题的解决方案。按照以下脚本工作:

int totalElements= Integer.parseInt(vars.get("totalElements"));
vars.put("totalElements", String.valueOf(totalElements));

然后我在Loop Controller中使用${__javaScript("${totalElements}")}并正常工作。