如何通过 "User Defined Variable" - 使用 JMeter 设置 iterate/loop?

How to iterate/loop through a "User Defined Variable" - set with JMeter?

是否有可能迭代或循环 "User Defined Variables" - 像使用 CSV 数据集(WHILE-COUNTER-CSV 数据集配置)一样设置?

我想为 "User Defined Variables" - 集合中包含的每个 变量触发 JDBC 请求(Select 语句)。它适用于 CSV 文件,但我不知道如何遍历变量集。这可能吗?我有各种场景,我想循环 "User Defined Variables" - set.

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

你应该坚持 csv 文件。

参考文献:

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

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

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

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

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

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

    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 变量

  3. 一旦你拥有它们 - 你可以使用配置如下的 ForEach 控制器:

  4. 因此您将能够使用 ${current}(或您在 JDBC 请求

    中放入 "Output variable name" 的任何内容

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