Как правильно использовать checkIf с несколькими извлечениями jsonPath - PullRequest
0 голосов
/ 15 апреля 2019

У меня есть сценарий, при котором я отправляю запрос GET, который иногда может возвращать 404, и я не хочу сообщать об этом как об ошибке в окончательных отчетах. Кроме того, если этот запрос выполнен успешно, мне нужно извлечь несколько значений из ответа json.

Как правило, эти 2 действия, которые я хочу использовать, работают нормально, когда используются независимо, т.е.

  1. извлечение нескольких значений JSON из ответа:

    jsonPath("$..usrn").saveAs("usrn"),
    jsonPath("$..street_descriptor").saveAs("street_descriptor"),
    ....      
    )
    
    
  2. Ручка 404s:

  status.saveAs("responseStatus"),
  checkIf(session => session("responseStatus").as[Int] == 200) {
    substring(usualHeader).exists
  },
  checkIf(session => session("responseStatus").as[Int] == 404) {
    substring(errorHeader).exists
  }

Но когда я попытался объединить эти два действия, я смог выполнить следующий код: компилировать и фактически извлекать данные. Но я чувствую, что это можно сделать без такого дублирования

.check(
  status.saveAs("responseStatus"),
  checkIf(session => session("responseStatus").as[Int] == 200) {
    jsonPath("$..usrn").saveAs("usrn")
  },
  checkIf(session => session("responseStatus").as[Int] == 200) {
    jsonPath("$..street_descriptor").saveAs("street_descriptor")
  },
   ...
  checkIf(session => session("responseStatus").as[Int] == 404) {
    substring("404 error").exists
  }

Я на Гатлинге 3.0.3

1 Ответ

2 голосов
/ 16 апреля 2019

вы можете использовать дополнительные проверки

.check(
  status.in(200, 404),
  jsonPath("$..usrn").optional.saveAs("usrn"), 
  jsonPath("$..street_descriptor").optional.saveAs("street_descriptor")
)
...