设置Jmeter全局javascript对象

时间:2017-10-18 09:35:03

标签: javascript jmeter

我有这个简单的对象:

var apple = {
    type: "macintosh",
    color: "red",
    getInfo: function(int){
        return "test" + int;
    }
}

在Jmeter中我想把这个对象放到一个允许我访问这个对象的全局变量中。

我试过了:

vars.putObject("test",apple);(在预处理器中,所有断言之前)

var test = vars.getObject("test");(在所有断言中)

但似乎该函数被转换为字符串,因此我不能在我的断言中使用它。

如何使这项工作?

2 个答案:

答案 0 :(得分:1)

如果您正在寻找“全局”解决方案,您需要考虑JMeter属性而不是JMeter变量,使用props简写代替vars。根据{{​​3}}用户手册章节:

  

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

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

props.put('test', apple)

在另一个中(也可以在另一个线程组中)

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

Sharing Variables

另请注意JMeter Properties across thread groups.因为Groovy性能比其他脚本选项好得多,请查看starting from JMeter 3.1 it is recommended to use Groovy language for any form of scripting指南以获取更多详细信息。

答案 1 :(得分:0)

在JMeter中,您可以使用Java语言,您可以添加Object apple

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());

您也可以create Java classes with groovy