Jmeter Groovy全局变量行为

Jmeter Groovy全局变量行为,groovy,jmeter,global-variables,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"); Asserti

我用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是全局变量。即使状态设置为0,它也会使总金额增加150。 可能是什么问题?请帮忙。我是Jmeter&Groovy的新手

  • 不要直接在Groovy脚本内部使用,因为:

    • 它们与
    • 它们与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);
    }
    
  • JMeter属性对于整个JVM来说是全局的,因此如果您设置了该属性,那么在您更新它或重新启动JMeter之前,它将具有该值。因此,如果要开始“清理”,需要将属性值设置为零,如:

    props.put('totalAmount', '0')
    
    或者完全移除它,就像:

    props.remove('totalAmount')
    
  • 有关在JMeter中使用Groovy脚本的更多信息,请参阅本文