如何编写BeanShellPostProcessor脚本以比较两个值

时间:2018-11-27 09:26:38

标签: jmeter jmeter-4.0

我想比较两个值,然后选择其中一个等于第二个变量。 我已经在BeanShellPostProcessor中写了如下代码

main

但是我遇到错误

2018-11-27 14:48:53,504错误o.a.j.u.BeanShellInterpreter:调用bsh方法时出错:eval在文件中:内联评估:``HitID = vars.get(“ AddPrpc139”); b = 139 if(HitID.equals(b)){log.info(“ ...... val ...。”在第4行第1列遇到“ if”。

2018-11-27 14:48:53,504警告oajeBeanShellPostProcessor:BeanShell脚本中的问题:org.apache.jorphan.util.JMeterException:调用bsh方法时出错:eval在文件中:内联评估:``HitID = vars .get(“ AddPrpc139”); b = 139 if(HitID.equals(b)){log.info(“ ...... val ...。”在第4行第1列遇到“ if”。

2 个答案:

答案 0 :(得分:0)

Java / Beanshell期望;位于行尾。也可以内嵌b

 HitID = vars.get("AddPrpc139");
 if("139".equals(HitIDb))
 {

还考虑迁移到JSR223后处理器

答案 1 :(得分:0)

  1. 您需要遵循Java syntax规则,例如,您需要在b=139行后添加分号。
  2. 您还应该在此139周围加上引号,否则JMeter会将StringInteger进行比较,即使这些值,您也将始终进入else分支会一样

修订代码:

HitID = vars.get("AddPrpc139");
b = "139";
if (HitID.equals(b)) {
    log.info("Values are equal, expected: " + b + ", got: " + HitID);
} else {
    log.info("Values are NOT equal, expected: " + b + ", got: " + HitID);
}'

演示:

enter image description here


请注意,according to JMeter Best Practices you should be using JSR223 PostProcessor with Groovy language starting from JMeter 3.1。 Groovy是一种更现代的语言,它与最新的Java功能兼容,并且具有更好的性能。请查看Apache Groovy - Why and How You Should Use It文章以了解更多详细信息。