groovy 如何在Jmeter中为API请求正文创建自定义请求

j7dteeu8  于 2022-11-21  发布在  其他
关注(0)|答案(1)|浏览(128)

我需要生成多个订单(1-10)随机和每个订单包含产品(1-20)随机。项目是从csv文件发送。我如何自定义请求正文,以实现这在Jmeter?

{
  "multipleOrders": [
    {
      "orderId": "12345678",
      "products": [
        {
          "productId": "1",
          "value": [
            {
              "item":"1"
            }
          ]
        },
        {
          "productId": "2",
          "value": [
            {
              "item":"2"
            }
          ]
        }
      ]
    },
     {
      "orderId": "98765432",
      "products": [
                    {
          "productId": "4",
          "value": [
            {
              "item":"4"
            
            }
          ]
        }
     ]
    }
   ]
}
ftf50wuq

ftf50wuq1#

我不认为发送随机数量的项目是你应该真正做的,因为测试需要repeatable,并考虑到每个请求将假设随机,因此不同数量的参数,你将无法重新运行同一测试一次,以解决问题。
随便啦
如果不了解CSV文件中的“项目”是如何组织的,就不太可能提供一个全面的答案。
您可以在Groovy中读取该文件,如下所示:

def lines = new File('/path/to/your/file.csv').readLines()

您可以在Groovy中使用JsonBuilder类创建JSON

def payload = [:]

def multipleOrders = []

1.upto(org.apache.commons.lang3.RandomUtils.nextInt(1, 20), index -> {
    def order = [:]
    def lineFromCsv = lines.get(index as int)
    order.put('orderId', lineFromCsv.split(',')[0])
    //etc.

    multipleOrders.add(order)
})

payload.put('multipleOrders', multipleOrders)

vars.put('payload', new groovy.json.JsonBuilder(payload).toPrettyString())

修改上面的代码片段以符合您的要求。
更多信息:

相关问题