【问题标题】:Passing multiple json as a payload for a request in Gatling在 Gatling 中传递多个 json 作为请求的有效负载
【发布时间】:2020-04-28 16:44:21
【问题描述】:

示例 json 有效负载:

'{
  "Stub1": "XXXXX",
  "Stub2": "XXXXX-3047-4ed3-b73b-83fbcc0c2aa9",
  "Code": "CodeX",
  "people": [
    {
      "ID": "XXXXX-6425-EA11-A94A-A08CFDCA6C02"
      "customer": {
    "Id": 173,
        "Account": 275,
        "AFile": "tel"
      },
      "products": [
        {
          "product": 1,
          "type": "A",
          "stub1": "XXXXX-42E1-4A13-8190-20C2DE39C0A5",
          "Stub2": "XXXXX-FC4F-41AB-92E7-A408E7F4C632",
          "stub3": "XXXXX-A2B4-4ADF-96C5-8F3CDCF5821D",
          "Stub4": "XXXXX-1948-4B3C-987F-B5EC4D6C2824"
        },
      {
          "product": 2,
          "type": "B",
          "stub1": "XXXXX-42E1-4A13-8190-20C2DE39C0A5",
          "Stub2": "XXXXX-FC4F-41AB-92E7-A408E7F4C632",
          "stub3": "XXXXX-A2B4-4ADF-96C5-8F3CDCF5821D",
          "Stub4": "XXXXX-1948-4B3C-987F-B5EC4D6C2824"
        }
      ]
    }
  ]
}'

我正在处理一个 POST 电话。有没有办法在 Gatling 中将多个 json 文件作为有效负载提供。我在这里使用body(RawFileBody("file.json")) as json

这适用于单个 json 文件。我想检查多个 json 文件的响应。有什么方法可以参数化它并获得对多个 json 文件的响应。

【问题讨论】:

    标签: scala performance-testing load-testing gatling


    【解决方案1】:

    据我所知,有几种方法可以做到这一点。

    1. 使用 JSON 馈送器 (https://gatling.io/docs/current/session/feeder#json-feeders)。这需要将多个 JSON 文件放在一个文件中,根元素是 JSON 数组。本质上,您会将您拥有的 JSON 对象放在单个 JSON 文件中的数组中

    2. 创建一个 Scala 迭代器,并在其中包含您要使用的 JSON 文件的名称。例如:

    val fileNames = Iterator("file1.json", "file2.json)
    
    // and later, in your scenario
    body(RawFileBody(fileNames.next())
    

    注意,此方法不能跨用户使用,因为迭代器将为每个用户单独初始化。您必须使用 repeat 或类似的东西以单个用户的身份发送多个文件。

    您可以通过将文件名维护为 Gatling 的 session 变量中的列表来执行类似的操作,但此会话仍不会在您注入到场景中的不同用户之间共享。

    【讨论】:

    • 让我试试。如有任何问题将恢复。
    • 嗨拉姆德什。我尝试了第二个选项,但这里 gatling 总是选择第一个 json 文件
    • 你注入了多个用户吗?不同的用户总是会重新初始化迭代器。您只需注入 1 个用户,此方法即可工作,并使用 repeat 发送多个请求。
    • 我尝试了第二种方式。重复(2){ exec({ val name = fileNames.next() System.out.println("***************"+name) http(name) .post(" /shift/request/123") .body(RawFileBody("data/add/" + name)).asJson .check(status.is(200)) }) } 但它不起作用。仅先采摘。
    • 你找到解决方案了吗@KetanRathod。如果是,请在此处发布答案
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-17
    • 2020-09-04
    • 2020-10-22
    • 1970-01-01
    • 2018-07-22
    • 1970-01-01
    相关资源
    最近更新 更多