设置Jmeter全局javascript对象

设置Jmeter全局javascript对象,javascript,jmeter,Javascript,Jmeter,我有一个简单的目标: var apple = { type: "macintosh", color: "red", getInfo: function(int){ return "test" + int; } } 在Jmeter中,我想将这个对象放入一个全局变量中,该变量允许我访问这个对象 我试过: vars.putObject(“测试”,苹果)(在预处理器中,因此在所有断言之前) var test=vars.getObject(“test”)(

我有一个简单的目标:

var apple = {
    type: "macintosh",
    color: "red",
    getInfo: function(int){
        return "test" + int;
    }
}
在Jmeter中,我想将这个对象放入一个全局变量中,该变量允许我访问这个对象

我试过:

vars.putObject(“测试”,苹果)(在预处理器中,因此在所有断言之前)

var test=vars.getObject(“test”)(在所有断言中)

但函数似乎是以字符串形式铸造的,因此我不能在断言中使用它


如何做到这一点?

在JMeter中,您可以使用Java语言添加对象

public class apple {
    String type = "macintosh";
    String color = "red";
    public String getInfo(){
        return "test";
    }
};
var a = new apple();

vars.putObject("a",a);
稍后再获取并使用其方法:

var a = vars.getObject("a");
log.info(a.getInfo());

你也可以

< p>如果你正在寻找一个“全局”的解决方案,你需要考虑JMeTm属性而不是JMUM变量,以使用<代码> PROP> <代码>速记,而不是<代码> VARS。根据用户手册章节:

get()和put()方法只支持带有字符串值的变量,但也有getObject()和putObject()方法可用于任意对象。JMeter变量是线程的本地变量,但可由所有测试元素(不仅仅是Beanshell)使用。 如果需要在线程之间共享变量,则可以使用JMeter属性

例如,在一个测试元素中:

props.put('test', apple)
在另一个线程组中(也可以在另一个线程组中)

还要注意,由于Groovy的性能比其他脚本选项要好得多,请查看指南以了解更多详细信息

var apple = props.get('test')
log.info(apple.getInfo(1))