我真的试图找到答案,但我不能。
我尝试使用regex reference_matchNr来递增用户定义的变量。 但我总是得到以下错误信息:
${__intSum(${summe},${count1},summe)};
jmeter.assertions.BeanShellAssertion: java.lang.NumberFormatException: For input string: "${count1}"
或
${__intSum(${summe},"${count1}",summe)};
jmeter.assertions.BeanShellAssertion: java.lang.NumberFormatException: For input string: ""${count1}""
或
${__intSum(${summe},count1,summe)};
jmeter.assertions.BeanShellAssertion: java.lang.NumberFormatException: For input string: "count1"
我使用以下代码获取matchNr值:
int count1 = Integer.parseInt(vars.get("status_matchNr"));
奇怪的是,我能够在jmeter log(log.info)
或文件中写入值。
提前致谢。
答案 0 :(得分:0)
我的期望是你在Beanshell Assertion中使用__intSum()函数来添加2个值。
这不会起作用,因为在断言之前函数被解释,因此函数执行时没有定义count1
变量。
所以解决方法是:
使用"参数"在解释断言之前输入功能评估。你还不需要转换你的" status_matchNr"变量为整数,intSum函数将为您完成。因此,如果您将以下行添加到"参数"
${__intSum(${summe},${status_matchNr},summe)};
它假设" summe"变量已定义,可以转换为整数
仅使用"代码" way - 纯粹在Beanshell代码中执行2个整数的总和,如:
int count1 = Integer.parseInt(vars.get("status_matchNr"));
int summe = Integer.parseInt(vars.get("summe"));
summe += count1;
vars.put("summe", String.valueOf(summe));
//your assertion logic here
我还建议考虑从Beanshell切换到JSR223 Assertion和groovy语言,因为Beanshell存在性能问题,如果负载很高,可能会成为瓶颈。有关详细信息,groovy脚本引擎安装说明和不同的脚本方法基准,请参阅Beanshell vs JSR223 vs Java JMeter Scripting: The Performance-Off You've Been Waiting For!指南。