Jmeter:在数组变量中保存循环控制器内采样器的响应

Jmeter: Saving response of a sampler inside a loop controller in a array variable

    --Loop_controller
       |--Http_Request_Sampler_One

    --Http_Request_Sampler_Two

我有一个带有响应主体的采样器 (Http_Request_Sampler_One) {"id": "12345"}.

此采样器位于 循环控制器 中,例如 运行 3 次

我想要一个名为 Ids 字符串数组变量 来保存所有 ID。 形式为 Ids = ["12345", "23421", "43546"]

一旦循环控制器结束,我想在 Http_Request_Sampler_Two 中使用这个 Ids 变量。

注意:我可以使用 JSON-extractor 从响应正文中提取 id,我更想知道一种推送它的方法在每次迭代结束后的数组中。

  1. JSR223 PostProcessor 添加为 Http_Request_Sampler_One

    的 child
  2. 将以下代码放入“脚本”区域

    if (vars.get('__jm__Loop Controller__idx') == '0') {
        def Ids  = []
        Ids.add(new groovy.json.JsonSlurper().parse(prev.getResponseData()).id)
        vars.put('Ids', new groovy.json.JsonBuilder(Ids).toPrettyString())
    }
    else {
        def Ids = new groovy.json.JsonSlurper().parseText(vars.get('Ids'))
        Ids.add(new groovy.json.JsonSlurper().parse(prev.getResponseData()).id)
        vars.put('Ids', new groovy.json.JsonBuilder(Ids).toString())
    }
    
  3. 就是这样,一旦您的循环控制器完成,您将从 Http_Request_Sampler_One 中提取的所有“ids”作为 ${Ids} JMeter 变量。

更多信息: