В Gatling, как выполнить итерацию массива json в .check для проверки всех значений

Пример ответа Json:

{
    "data": {
        "types": [
            {
                "attributes": [
                    {
                        "body": {
                            "id": 123
                        }
                    },
                    {
                        "body": {
                            "id": 456
                        }
                    }
                ]
            },
            {
                "attributes": [
                    {
                        "body": {
                            "id": 456
                        }
                    },
                    {
                        "body": {
                            "id": 123
                        }
                    }
                ]
            }
        ]
    }
}

Я хочу подтвердить, что все идентификаторы равны 123, если значения отличны от 123, тест Гатлинга должен завершиться ошибкой.

Я пробовал приведенный ниже код, который не соответствует утверждению, но отчет gatling показывает, что он прошел. Как я предполагаю, assert - это несложное утверждение, а не утверждение гатлинга.

val testSC1 = scenario("Sample-test")

     .exec(http("Test-Post")
      .post("dataservice/v1/test")
      .header("Authorization", getToken)
      .body(StringBody(getPayload))
      .asJSON
      .check(jsonPath("$.data.types[*].attributes[*].body.id").findAll.saveAs("getAllId"))
    ).
    exec
    { session =>
        //println(session("getAllId").as[String])
        val iDs = session("getAllId").as[Seq[String]]
        for (getEachId <- iDs)
        {

          assert(getEachId.equals("123"),"Actual:  "+getEachId+"Expected : 123")
        }
        session
    }

Как выполнить итерацию значений в методе .check $ .data.types [] .attributes [] .body.id?

Или любое другое лучшее решение будет полезным.


person shrusthip    schedule 01.06.2021    source источник


Ответы (1)


person    schedule
comment
Спасибо за ответ. Теперь у меня есть еще одна проблема: мое ожидаемое значение является постоянным, например, 123, но их много около 1000+, так как мне добавить его в Seq (123, 123, 123, .... 123)) - person shrusthip; 02.06.2021
comment
Создайте метод, который строит эту последовательность. Тогда такая глубокая проверка будет выглядеть как функциональный тест, а не как нагрузочный. - person Stéphane LANDELLE; 02.06.2021
comment
@shrusthip в вашем случае вы можете использовать метод fill. Он заполнит ваш Seq значением N раз. Seq.fill(1000)("123") - person Amerousful; 02.06.2021