Остановите отправку запросов, проверив тело ответа в JMeter - PullRequest
0 голосов
/ 01 мая 2020

Я хочу продолжать вызывать REST API, пока в теле ответа не будет 100 элементов.

Вот пример:

запрос: someurl/get/data

ответ : 1-й вызов API: (включая 2 элемента)

{
  "items" : [
          {
            "name": "abc",
            "id"  : "ajdiw123"
          },
          {
            "name": "abc",
            "id"  : "ajdiw123345"
          }
  ]
}

2-й вызов API: (4 элемента)

{
  "items" : [
          {
            "name": "abc",
            "id"  : "ajdiw123"
          },
          {
            "name": "def",
            "id"  : "ajdiw145"
          },
          {
            "name": "afc",
            "id"  : "ajdiw113"
          },
          {
            "name": "bbc",
            "id"  : "ajdiw199"
          }
  ]
}

, как и в этом теле ответа, элементы могут быть изменены. В какой-то момент он вернет 100 элементов с 100 различными идентификаторами. Как я могу это определить и перестать отправлять запросы в конечную точку с помощью JMeter.

Ответы [ 2 ]

2 голосов
/ 01 мая 2020

Это может быть достигнуто несколькими способами в зависимости от вашего плана тестирования.

Добавьте JSON Extractor и JSR223 Assertion к вашему запросу.

JSON Настройки экстрактора будут такими:

enter image description here

Код подтверждения JSR223 будет выглядеть следующим образом:

String totalIDs = vars.get("id_matchNr");
Integer result = Integer.valueOf(totalIDs);
if (result == 100){
    AssertionResult.setFailure(true);
}

После этого просто добавьте Обработчик действия статуса результата к этому запросу, чтобы он остановил выполнение для указанного потока c:

enter image description here

1 голос
/ 01 мая 2020

Попробуйте:

  • Добавьте постпроцессор в свой запрос. A JSON Extractor для извлечения любого уникального атрибута массива, скажем, ID. JSON Извлечение должно иметь поле с номером совпадения, установленное на -1 , и имя, заданное как requesttid , и выражение как $ .. id
  • Отладочный сэмплер
  • Все это должно быть внутри контроллера While, который будет иметь условие $ {__ jexl3 ($ {requesttid_matchNr}! = 100)}. «requesttid_matchNr» будет получен из ответа Debug Sampler.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...