jmeter csv数据POST json集合

时间:2015-10-29 22:11:16

标签: json csv collections jmeter

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

WHERE posn.position_contract_type = 'P' AND
      posn.position_status <> 'T' AND
      (posn.effective_date = (SELECT MAX(effective_date)
                              FROM   employee_position_cunm p2
                              WHERE  p2.person_uid = posn.person_uid
                                     p2.position = posn.position AND
                                     p2.job_suffix = posn.job_suffix AND
                                     p2.effective_date <= '01-Nov-2014'
                             ) OR
       posn.effective_date = (SELECT MAX(effective_date)
                              FROM   employee_position_cunm p2
                              WHERE  p2.person_uid = posn.person_uid
                                     p2.position = posn.position AND
                                     p2.job_suffix = posn.job_suffix AND
                                     p2.effective_date <= '01-Nov-2015'
                             )
      )

我有一个看起来像这样的CSV文件:

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

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

"ProductId":"${ProductId}"

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

2 个答案:

答案 0 :(得分:0)

如果每个请求总共有2个产品,只需按照这种方式组织您的CSV:

  

ProductId1,SKU1,内容描述,ProductId2,SKU2,内容描述

并使用新的变量名称。

答案 1 :(得分:0)

使用__StringFromFile()__javaScript()功能的组合,例如:

{
  "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],)}"
    }
  ]
}
  • __StringFromFile()函数在每次调用时都会从file.csv读取下一行
  • __javaScript()函数允许执行任意JavaScript代码,在上面的案例split()函数中将行分为ProductId,Sku和Description。

有关JMeter功能的更多信息,请参阅Functions and Variables用户手册章节和How to Use JMeter Functions帖子系列。