В Гатлинге, как выполнить итерацию массива json в .проверьте, чтобы проверить все значения

#gatling #scala-gatling

Вопрос:

Пример ответа Json-это

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

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

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

 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[].атрибуты[].body.id ?

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

Ответ №1:

 jsonPath("$.data.types[*].attributes[*].body.id").findAll.is(Seq("expectedValue1", "expectedValue2", "expectedValue3"))
 

Комментарии:

1. Спасибо за ответ. Теперь у меня есть еще одна проблема, что мое ожидаемое значение постоянно, например,»123″, но их много около 1000 , так как мне добавить его в раздел(«123», «123», «123»,…. «123»))

2. Создайте метод, который строит эту последовательность. Тогда такая углубленная проверка выглядит как функциональный тест, а не нагрузочный тест.

3. @shrusthip в вашем случае вы можете использовать метод fill . Он заполнит ваш раздел значением N раз. Seq.fill(1000)("123")