Как дождаться, пока определенное слово не будет найдено в ответе в jmeter?

#jmeter #request #response #wait

Вопрос:

Ответ json-это:

 {
  "status": 11111,
  "data": {
    "mylist": 
    {
      "1": [
        {
          "id": 1,
          "tId": 11
        }],
    
      "2": [
        {
          "id": 2,
          "tId": 12
        },
        {
          "id": 3,
          "tId": 12
  
        },
        {
          "id": 4,
          "tId": 13,
        }
      ]
} 

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

Ответ №1:

  1. Добавьте 2 экстрактора JSON для хранения значений id атрибутов ниже 1 и 2 в соответствующие переменные JMeter

    введите описание изображения здесь

    введите описание изображения здесь

  2. Поместите всю конструкцию под контроллер While и используйте следующую функцию __groovy() в качестве условия:
     ${__groovy((vars.get('1_matchNr') ?: 0  as int) == 0 amp;amp; (vars.get('2_matchNr') ?: 0  as int) == 0,)}
     

    введите описание изображения здесь

  3. Вот и все, JMeter будет повторять запрос до тех пор, пока не появятся результаты, mylist содержащие хотя бы один id атрибут

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

1. это работает на тебя? Я добавил 2 экстрактора json, как упоминалось, для хранения значений атрибутов идентификаторов и добавил контроллер while для того же запроса, что я вижу, в то время как цикл вообще не выполняется.

2. это сработало после перезапуска jmeter. Спасибо!

Ответ №2:

Пробоотборник HTTP-запросов JMeter загружает все данные, чтобы отметить выполнение запроса. После загрузки вы можете добавить различные типы утверждений, такие как утверждение JSON, утверждение JSR223 или утверждение ответа, для проверки различных свойств ответа. Насколько мне известно, вы не можете получить доступ к данным во время их потоковой передачи / загрузки.