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

How to create custom request in Jmeter for API request body

提问人:Raxon 提问时间:11/9/2022 更新时间:11/9/2022 访问量:103

问:

我需要随机生成多个订单(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"
            
            }
          ]
        }
     ]
    }
   ]
}
API 时髦 jmeter

评论


答:

0赞 Dmitri T 11/9/2022 #1

我不认为发送随机数量的项目是您应该真正做的,因为测试需要是可重复的,并且鉴于每个请求都假定随机,因此参数数量不同,您将无法再次重新运行相同的测试以解决问题。

无论什么。

如果不查看 CSV 文件中“项目”的组织方式,就不可能提供全面的答案。

您可以在 Groovy 中读取文件,如下所示:

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

你可以使用 JsonBuilder 类在 Groovy 中创建 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())

修改上面的代码片段以符合您的要求。

更多信息: