我有这个简单的对象:
var apple = {
type: "macintosh",
color: "red",
getInfo: function(int){
return "test" + int;
}
}
在Jmeter中我想把这个对象放到一个允许我访问这个对象的全局变量中。
我试过了:
vars.putObject("test",apple);
(在预处理器中,所有断言之前)
var test = vars.getObject("test");
(在所有断言中)
但似乎该函数被转换为字符串,因此我不能在我的断言中使用它。
如何使这项工作?
答案 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))
另请注意因为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());