【问题标题】:Jmeter: Saving response of a sampler inside a loop controller in a array variableJmeter:将循环控制器内采样器的响应保存在数组变量中
【发布时间】:2021-05-15 10:36:42
【问题描述】:
    --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 提取器从响应正文中提取 id,我更想知道在每次迭代结束后将其推送到数组中的方法。强>

【问题讨论】:

    标签: arrays loops http controller jmeter


    【解决方案1】:
    1. 将JSR223 PostProcessor 添加为Http_Request_Sampler_One 的子级

    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 提取的所有“id”作为${Ids} JMeter 变量。

    更多信息:

    【讨论】:

    • 它有效,但是我如何获得这个 Ids 变量的长度?我试过 ${Ids.length()} 但它不起作用。
    • 您是否尝试阅读参考文章?我相信它们确实包含所有答案。以防万一您喜欢在不了解代码在做什么的情况下复制和粘贴代码,以下是获取数组长度的方法:${__groovy(new groovy.json.JsonSlurper().parseText(vars.get('Ids')).size(),)}。如果您想了解更多信息:The Groovy Templates Cheat Sheet for JMeter
    • 引用的文章不包含,如何访问此数组变量的第 n 个元素,我尝试使用 ${Ids.get(n)} 和 ${Ids[n]} 但没有奏效.
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-28
    • 2023-03-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多