Jmeter - 在Beanshell中访问正则表达式数组变量

时间:2016-05-10 09:56:53

标签: jmeter beanshell

我在拾取正则表达式设置的变量时遇到问题 Beanshell中的提取器。

  1. 我有一个HTTP请求采样器,它以随机形式返回一个包含50个数字的列表(4,2,1,3 ...... 50,45),这些数字是我通过regEx提取的。
  2. 现在我想获取变量中的每个数字,所以我再次使用regEx和表达式(。+?)(,)来自上面步骤#1的JMeter变量。
  3. 当我使用BeanShell访问这些值时,我在这一步有问题
  4. 我不确定我在下面使用过:

    long var1 = Integer.parseInt(vars.get("Number_i"));
    print("Value of var1: " +var1);
    

    实际上我想这样做:

    for (i=0; i<50; i++) {
      if (var1==1) {
        do this
      }
    }
    

    我不擅长Jmeter,所以请耐心等待。

1 个答案:

答案 0 :(得分:3)

鉴于您使用正则表达式提取器提取变量,并且您具有&gt; 1匹配已经有多个变量,您可以使用Debug SamplerView Results Tree监听器组合检查它们

Debug Sampler

所以你可以在JMeter中访问变量,如:

${number_1}
${number_2}

并在Beanshell测试元素中使用vars简写代表JMeterVariables类实例,如:

vars.get("number_1");
vars.get("number_2");

示例代码将迭代所有匹配并且&#34;执行某些操作&#34;当前变量值为&#34; 1&#34;

int matches = Integer.parseInt(vars.get("number_matchNr"));

for (int i=1; i<=matches; i++) {

    if (vars.get("number_" + i).equals("1")) {
        log.info("Variable: number_" + i + " is 1");
        // do something
    }
}

Beanshell compare variables

有关如何在JMeter中开始使用Beanshell的更多信息,请参阅JMeter API - 所有JMeter类上的JavaDoc和How to Use BeanShell: JMeter's Favorite Built-in Component