如何迭代/循环“用户定义的变量” - 使用 JMeter 设置?

Vol*_*Jin 3 jmeter load-testing

是否有可能通过“用户定义的变量”进行迭代或循环 - 设置为可以使用 CSV 数据集(WHILE-COUNTER-CSV 数据集配置)?

我想为“用户定义的变量”中包含的每个变量触发一个 JDBC 请求(选择语句)- 集合。它适用于 CSV 文件,但我不知道如何遍历变量集。这甚至可能吗?我有各种场景,我想循环遍历“用户定义的变量” - 集。

Dmi*_*i T 6

为了能够使用ForEach Controller迭代用户定义的变量,您只需要遵循简单的命名约定,例如:

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

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

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

    JMeter 用户定义变量

    并且您想在 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);
    
    Run Code Online (Sandbox Code Playgroud)

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

    groovy 生成的 JMeter 变量

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

    用于额外变量的 ForEach 控制器

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

    Groovy 变量替换

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