【问题标题】:How write BeanShellPostProcessor script for comparing two values如何编写 BeanShellPostProcessor 脚本来比较两个值
【发布时间】:2018-11-27 09:26:37
【问题描述】:

我想比较两个值并选择哪个等于第二个变量。 我在 BeanShellPostProcessor 中编写了如下代码

HitID = vars.get("AddPrpc139");
b=139
if(HitID.equals(b))
{
log.info("......value=");
}else
{
    log.info("......value=");
}

但是我遇到了错误

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 警告 o.a.j.e.BeanShellPostProcessor:BeanShell 脚本中的问题:org.apache.jorphan.util.JMeterException:调用 bsh 方法时出错:eval 在文件中:内联评估:``HitID = vars .get("AddPrpc139"); b=139 if(HitID.equals(b)) { log.info("......val . . . '' 在第 4 行第 1 列遇到“if”。

【问题讨论】:

    标签: jmeter jmeter-4.0


    【解决方案1】:

    Java/Beanshell 期望 ; 在行尾。 b 也可以内联

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

    还可以考虑迁移到 JSR223 PostProcessor

    【讨论】:

      【解决方案2】:
      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);
      }'
      

      演示:


      请注意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 文章了解更多详情。

      【讨论】:

      • 嗨 HDmitri T,上面的代码工作正常,但我需要在我的脚本中使用预期值。如何在我的脚本中选择值并替换。
      • 您可以使用“Parameters”部分来传递值并将b = "139";这一行修改为b = Parameters
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-02-15
      • 1970-01-01
      • 1970-01-01
      • 2021-03-28
      • 2020-01-07
      • 1970-01-01
      • 2012-11-22
      相关资源
      最近更新 更多