首页 > 解决方案 > 如何从 JMeter 的 ForEach 控制器中的变量中获取对象

问题描述

假设我在最后一个请求的后 beanshell 处理器上设置了一个列表。

 List list = Arrays.asList("a","b");
 vars.putObject("list", list);

如何将每个列表值应用于 ForEach Contoller 中的请求?谢谢!

标签: jmeterjmeter-5.0

解决方案


  1. ForEach Controller不能对对象进行操作,您必须以以下形式创建JMeter 变量

    var_1=a
    var_2=b
    

    您可以使用JMeterVariables类实例vars的简写来创建 JMeter 变量,例如:

    vars.put("var_1", "a");
    vars.put("var_2", "b");
    

    在此处输入图像描述

  2. 然后您可以配置 ForEach 控制器以使用var前缀并将输出存储到${current_var}JMeter 变量中:

    在此处输入图像描述

  3. 就是这样,ForEach 控制器将迭代创建的变量:

    在此处输入图像描述


请注意,从 JMeter 3.1 开始,建议使用 JSR223 测试元素和 Groovy 语言编写脚本,因为Groovy 性能比 Beanshell 好得多。此外,Groovy 是更“现代”的语言,它支持所有新的 Java 特性,并在标准 Java SDK 之上提供额外的功能。


推荐阅读