如何迭代/循环使用"用户自定义变量" - 用JMeter设置?

时间:2017-02-16 08:52:12

标签: jmeter load-testing

是否有可能迭代或循环使用"用户定义的变量" - 使用CSV数据集(WHILE-COUNTER-CSV数据集配置)设置可能吗?

我想为"用户定义变量"中包含的每个变量发出一个JDBC请求(Select Statement)。 - 设置。它适用于CSV文件,但我无法弄清楚如何循环变量集。这甚至可能吗?我有各种各样的场景,我想循环通过"用户定义的变量" - 设置。

2 个答案:

答案 0 :(得分:4)

为了能够使用User Defined Variables迭代ForEach Controller,您只需遵循简单的命名约定,如:

  • var_1=someValue
  • var_2=someOtherValue
  • var_3=someMoreValue

但是,如果您想保留原始变量名称,可以创建一组额外的JMeter变量,ForEach Controller可以使用以下步骤使用这些变量:

  1. 假设您有以下用户定义变量:

    JMeter User Defined Variables

    并且您想在ForEach控制器中使用它们的值

  2. 在脚本的某处添加JSR223测试元素(采样器,前/后处理器等),并将以下代码放入其脚本"区域

    import org.apache.jmeter.threads.JMeterVariables;
    
    int counter = 1;
    
    JMeterVariables tempVars = new JMeterVariables()
    
    vars.entrySet().each { entry -> 
        def name = entry.getKey()
        if (!name.equals("JMeterThread.last_sample_ok") && !name.equals("JMeterThread.pack") && !name.equals("START.HMS") && !name.equals("START.MS") &&
            !name.equals("START.YMD") && !name.equals("TESTSTART.MS")) {
            tempVars.put("tempVar_" + counter, entry.getValue())
            counter++;
        }
    }
    
    vars.putAll(tempVars);
    

    脚本完成后,你应该还有3个JMeter变量

    JMeter variables generated by groovy

  3. 一旦拥有它们 - 您可以使用ForEach Controller配置如下:

    ForEach Controller for extra variables

  4. 因此,您将能够使用${current}(或者您在"输出变量名称"中的任何内容;在JDBC请求中

    Groovy Variables substitution

  5. 请参阅Groovy Is the New Black文章,了解有关在JMeter测试中使用Groovy的更多信息。

答案 1 :(得分:-4)

您不能只在用户定义的变量列表中进行迭代。从安全角度来看,您不应该被允许这样做。

你应该坚持 csv 文件。

参考文献: