3

我看过几篇与此相关的帖子,但我找不到与我的场景非常匹配的帖子,因此将其发布为一个新问题。

我有以下 JSON 响应

{
  "myshop": [
    { 
      "url": "test1",
      "hits": 1000
    },
    { 
      "url": "test2",
      "hits": 2000
    },
    { 
      "url": "test3",
      "hits": 3000
    }
  ]
}

我想提取每个 URL,其相应的命中,并将其存储在 CSV 文件中,在这种情况下,它将是 CSV 文件中的 3 行

test1,1000
test2,2000
test3,3000

但无法成功地做到这一点。我的 JSON 提取器:

$..url;$..hits 匹配数为 -1

但它会选择所有 URL,但会选择任何随机命中值。此外,我能够为每个控制器使用一个变量来从 JSON 中提取,使用 BeanShell 后处理器成功地将其写入 CSV,但同样不适用于这种情况。任何指针都会有所帮助。我确实检查了 JSR223 后处理器的答案很少,但这并没有涵盖这个问题场景。

提前致谢

4

1 回答 1

3
  1. 添加JSR223 PostProcessor作为返回上述 JSON 的请求的子项
  2. 将以下代码放入“脚本”区域:

    new groovy.json.JsonSlurper().parse(prev.getResponseData()).myshop.each { entry ->
        new File('entries.csv') << entry.get('url') << ',' << entry.get('hits') << System.getProperty('line.separator')
    }
    
  3. 就是这样,一旦你运行你的测试entries.csv文件将在 JMeter 的“bin”文件夹中生成,其中包含所需格式的信息。

参考:


另请注意,鉴于代码一次最多以 1 个线程执行(即确保使用关键部分控制器),该方法将可靠地工作。否则考虑切换到示例变量灵活的文件编写器

于 2019-02-19T07:58:31.590 回答