如何在阵列上使用ForEach控制器?

Nil*_*esh 3 jmeter jmeter-plugins

jmeter ForEach控制器可用于迭代具有相同前缀的变量,如

myVar_1
myVar_2
myVar_3
Run Code Online (Sandbox Code Playgroud)

但在我的情况下输入变量是字符串数组,[ "val1", "val2", "val3" ]如何迭代数组并为每个值发送单独的请求?

Dmi*_*i T 5

您将无法将此JSON数组提供给ForEach控制器,但您可以其转换为ForEach控制器可以理解的形式

  1. 在定义了保存此JSON数组的变量后添加JSR223 Sampler
  2. 将以下代码放入"脚本"区域:

    def json = new groovy.json.JsonSlurper().parseText(vars.get("yourInputVariable"))
    def counter = 1
    json.each {
        vars.put("myVar_" + counter, it)
        counter++
    }
    
    Run Code Online (Sandbox Code Playgroud)

    替换为yourInputVariable包含JSON数组的变量的实际名称

  3. 在JSR223 Sampler下添加ForEach Controller并执行"正常"配置myVar_1, myVar_2,...- 它将正常工作,因为JSR223 Sampler根据JSON数组中的数据创建相关变量.

请参阅解析和生成JSON - GroovyGroovy是新的黑色文章以获取更多信息.