Контроллер внутри Пока контроллер в метре - PullRequest
0 голосов
/ 26 июня 2018

У меня есть контроллер while, который повторяет один и тот же запрос, пока не будет выполнено условие.Внутри этого контроллера я хочу выбрать определенный HTTP-запрос в зависимости от JSON-ответа , заданного GET-запросом вне цикла while.

Следовательно, моя логика состоит в том, чтобы настроить контроллер while (работающий в данный момент)

${__javaScript(parseInt(${counterApis})<=parseInt(vars.get("FirstNames_matchNr")),)}

, внутри которого есть препроцессор JSR223 со следующим:

vars.put("TypeCode",vars.get("TypeCodes_"+vars.get("counterApis")));

Идея проста, в то время как цикл while использует препроцессор для проверки значения переменной TypeCode (которая может быть ADT, CHD или INF в зависимости от ответа JSON), а затем использует эту переменную для выбора между конкретным запросом POST.в зависимости от этой переменной.

Проблема: По какой-то причине, когда я пытаюсь добавить IF CONTROLLER или SWITCH CONTROLLER в контроллер while, сценарий аварийно завершает работу и не обращается ни к одному из запросов POST.

Вот как это выглядит: If controller Switch Controller

Ответы [ 2 ]

0 голосов
/ 26 июня 2018

Вы используете неправильный тестовый элемент JSR223.Препроцессоры JSR223 выполняются перед сэмплерами, поэтому ваш контроллер коммутатора просто не получает необходимый ввод.

Измените препроцессор JSR223 на Пробоотборник JSR223 , и я считаю, что ваш скрипт начнет работать так, как ожидалось.Если вы не хотите видеть сэмплер JSR223 в результатах теста, вы можете поместить куда-нибудь следующую строку:

SampleResult.setIgnore()

Также рассмотрите возможность переключения на __ groovy () функцию в вашем контроллере while как рекомендуется использовать наиболее эффективный вариант сценариев

javaScript не лучший язык сценариев для выступлений в JMeter.Если ваш план требует большого количества потоков, рекомендуется использовать функции __jexl3 или __groovy.

0 голосов
/ 26 июня 2018

Если вы хотите выполнить определенный блок кода внутри цикла while

Это можно сделать с помощью Если контроллер внутри while loop ..

К вашему циклу while добавьте контроллер if ..

Для типа ADT вы можете использовать

${__javaScript(vars.get("TypeCode")=="ADT")}

Условие должно быть оценено как true или false, поэтому, если вы используете ${TypeCode}=="ADT" это не работает

Для получения дополнительной информации о цикле while следуйте по этой ссылке

Пожалуйста, дайте мне знать, если это поможет ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...