#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")