【问题标题】:Set Jmeter global javascript object设置 Jmeter 全局 javascript 对象
【发布时间】:2017-10-18 09:35:03
【问题描述】:

我有这个简单的对象:

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

在 Jmeter 中,我想把这个对象放入一个全局变量中,让我可以访问这个对象。

我试过了:

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

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

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

如何做到这一点?

【问题讨论】:

    标签: javascript jmeter


    【解决方案1】:

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

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

    例如在一个测试元素中:

    props.put('test', apple)
    

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

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

    另外请注意,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 指南了解更多详细信息。

    【讨论】:

      【解决方案2】:

      在 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

      【讨论】:

        猜你喜欢
        • 2013-07-15
        • 1970-01-01
        • 2016-10-09
        • 2014-10-14
        • 2017-05-26
        • 2012-10-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多