如何在bean shell中评估不等于?

时间:2019-01-12 22:52:36

标签: jmeter beanshell

我试图在bean外壳的if条件中评估一个不等于,但逻辑似乎是正确的。我没有得到预期的结果。

这是针对jmeter中的bean shell后处理器

r = ctx.getPreviousResult().getResponseCode();

if (!r.equals(200))
{
  log.info("vin IS --> "+"${vin}");
  p.println(r +","+ "${vin}" + ",");
}

我打算只打印200个响应代码,但它也打印200个响应代码。

在此先感谢您的帮助

2 个答案:

答案 0 :(得分:1)

代码:

  

如果(!r.equals(200))

应该是:

  

if(!r.equals(“ 200”))

顺便说一句,您不应该再使用Beanshell了,而是按照以下方式使用JSR223测试元素+ Groovy:

答案 1 :(得分:1)

  1. 您正在将StringInteger进行比较,您需要先将其转换为Integer,例如:

    r = Integer.parseInt(ctx.getPreviousResult().getResponseCode());
    
  2. 您正在使用some form of performance anti-pattern的Beanshell。对于任何形式的脚本,建议使用JSR223测试元素和Groovy语言作为Groovy has much better performance comparing to Beanshell
  3. 您要将JMeter Variables内联到脚本中,因为变量可能解析为导致编译失败或意外行为的变量,所以它不是很安全。此外,在使用Groovy的情况下,变量将只解析一次或与GString templates / compilation caching功能发生冲突。因此,请考虑更改:

    log.info("vin IS --> "+"${vin}");
    

    log.info("vin IS --> "+vars.get("vin"));