Jmeter Groovy全局变量行为

时间:2018-05-09 15:09:45

标签: groovy jmeter global-variables

我在Jmeter写了一个脚本如下:

vars.put("status","0");
if(vars.get("status") == "1"){
    __setProperty(totalAmount, ""+ (Integer.parseInt(${__property(totalAmount)}) + 150))};
}
else{    
    AssertionResult.setFailureMessage("incorrect status");
    AssertionResult.setFailure(true);
}

totalAmount是全局变量。即使status设置为0,它也会将总量增加150。 可能是什么问题?请帮忙。我是Jmeter&的新手。 Groovy的。

1 个答案:

答案 0 :(得分:1)

  1. 不要在Groovy脚本中直接使用JMeter Functions and/or Variables

    • 他们与Groovy GString Templates
    • 发生冲突
    • 它们与Groovy编译缓存功能冲突
    • 他们可能会解决导致编译失败的问题

    所以请将您的代码更新为:

    vars.put("status","0");
    if(vars.get("status") == "1"){
       props.put(totalAmount, (props.get('totalAmount') as int) + 150)
    }
    else{    
        AssertionResult.setFailureMessage("incorrect status");
        AssertionResult.setFailure(true);
    }
    
  2. 整个JVM的JMeter属性为全局,因此如果您设置该属性 - 它将具有该值,直到您更新它或重新启动JMeter。因此,如果要开始“清理”,则需要将属性值设置为零,如:

    props.put('totalAmount', '0')
    

    或完全删除它:

    props.remove('totalAmount')
    
  3. 有关在JMeter中使用Groovy脚本的更多信息,请参阅Apache Groovy - Why and How You Should Use It文章。