Gatling - проверка, является ли ключ строки ответа тела определенным значением - PullRequest
1 голос
/ 19 февраля 2020

У меня есть сценарий в Gatling, и я хочу проверить, отображается ли значение тела ответа на строку ошибки. Ответ 400:

{"error": "ERROR_1"}

Проверка не удалась с ошибкой компиляции:

 http("Some Request")
  .put("/endpoint")
  .asJson
  .check(jsonPath("$.error") == "ERROR_1")
  .check(status.is(400))

Также попытался сохранить ошибку как переменную

.check(jsonPath("$.error").saveAs("error"))
.check("${error}" == "ERROR_1")

И понял, что .check("${error}".is("ERROR_1")) тоже не будет работать, поскольку .is работает только для целых. Документы Гатлинга также не слишком много объясняют выражения https://gatling.io/docs/current/http/http_check#validating

Есть идеи?

Ответы [ 3 ]

2 голосов
/ 20 февраля 2020

Ваше утверждение о том, что .is работает только для целых, неверно - и вот как вы должны построить эту проверку.

Вот рабочий пример с проходной проверкой

def test : ScenarioBuilder = scenario("test")
.exec(
  http("test call")
    .post("http://httpbin.org/anything")
    .body(StringBody("""{"error": "ERROR_1"}"""))
    .check(jsonPath("$..error").is("ERROR_1"))
)

Вы можете Для использования == в качестве проверки Гатлинга требуется один или несколько HttpChecks, а == возвращает логическое значение.

1 голос
/ 08 апреля 2020

Спасибо за все ответы! Кажется, я скучал. в .error, так что это сработало для меня:

 http("Some Request")
  .put("/endpoint")
  .asJson
  .check(jsonPath("$.error").is("ERROR_1"))
  .check(status.is(400))
1 голос
/ 26 февраля 2020

Попробуйте это:

.check(
      status.is(400),
      jsonPath("$.error").is("ERROR_1")
    )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...