jmeter csv数据后期json收集

jmeter csv数据后期json收集,json,csv,collections,jmeter,Json,Csv,Collections,Jmeter,HTTP请求的JSON正文需要如下所示: { "OrderId":"234", "SupplierId":"JJ889", "OrderedProducts": [ { "ProductId":"123", "Sku":"ABC123", "Description":"Thing 1" }, { "ProductId":"435", "Sku":"XYZ987", "Description

HTTP请求的JSON正文需要如下所示:

{
  "OrderId":"234",
  "SupplierId":"JJ889",
  "OrderedProducts": [
    {
      "ProductId":"123",
      "Sku":"ABC123",
      "Description":"Thing 1"
    },
    {
      "ProductId":"435",
      "Sku":"XYZ987",
      "Description":"Thing 2"
    }
  ]
}
我有一个CSV文件,看起来像:

ProductId,Sku,Description
123,ABC123,Thing 1
435,XYZ987,Thing 2
....
但是,当我在HTTP请求正文数据中替换
“ProductId”:“${ProductId}”
(以及sku和description的其他变量)时,我最终得到:

{
  "OrderId":"234",
  "SupplierId":"JJ889",
  "OrderedProducts": [
    {
      "ProductId":"123",
      "Sku":"ABC123",
      "Description":"Thing 1"
    },
    {
      "ProductId":"123",
      "Sku":"ABC123",
      "Description":"Thing 1"
    }
  ]
}

如何确保我收集的产品在每个请求中都是唯一的(即不同的CSV行)?

如果您总是在每个请求中有两个产品,只需按以下方式组织您的CSV:

ProductId1,Sku1,描述1,ProductId2,Sku2,描述2

并使用新的变量名。

使用和函数的组合,如:

{
  "OrderId":"234",
  "SupplierId":"JJ889",
  "OrderedProducts": [
    {
      "ProductId":"${__javaScript("${__StringFromFile(file.csv,,,)}".split("\,")[0],)}",
      "Sku":"${__javaScript("${__StringFromFile(file.csv,,,)}".split("\,")[1],)}",
      "Description":"${__javaScript("${__StringFromFile(file.csv,,,)}".split("\,")[2],)}"
    },
    {
      "ProductId":"${__javaScript("${__StringFromFile(file.csv,,,)}".split("\,")[0],)}",
      "Sku":"${__javaScript("${__StringFromFile(file.csv,,,)}".split("\,")[1],)}",
      "Description":"${__javaScript("${__StringFromFile(file.csv,,,)}".split("\,")[2],)}"
    }
  ]
}
  • \uu StringFromFile()
    函数每次调用时都从
    文件.csv
    读取下一行
  • \uuujavascript()
    函数允许执行任意javaScript代码,在上述情况下,函数将行拆分为ProductId、Sku和Description

有关JMeter函数的更多信息,请参阅用户手册章节和posts系列

每个请求总是有2种产品吗?不,不总是2种产品。我希望能够有一个每个请求的产品数量可变。我想我可以将CSV结构为每行有4或5个产品,并且有多个请求,每个请求最多有5个产品,这样就有点捏造了。我仍然想要一个更优雅的解决方案。在这种情况下,据我所知,在HTTP请求中使用JSON之前,您必须使用beanshell预处理器来定制JSON。