2017-10-18 52 views
1

我有这个简单的目的:设置的JMeter的全局JavaScript对象

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

在JMeter中我希望把这个对象到一个全局变量,让我来访问该对象。

我想:

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

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

但似乎功能被铸造为字符串因此我不能在我的断言中使用它。

如何使这项工作?

回答

1

如果您正在寻找一个“全局”解决方案,您需要考虑JMeter属性而不是JMeter变量,以便使用props速记的vars。按Sharing Variables用户手册:

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

例如,在一个测试元件:

props.put('test', apple) 

在另一个(可以是另一个线程组以及)

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

JMeter Properties across thread groups.

另请注意,starting from JMeter 3.1 it is recommended to use Groovy language for any form of scripting作为Groovy的性能要比其他脚本选项好得多,请查看Apache Groovy - Why and How You Should Use It指南获取更多详细信息。

0

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

你也可以create Java classes with groovy