Попытка встроить небольшой элемент управления циклом в скрипт, чтобы предотвратить его бесконечный цикл (потому что, к сожалению, это серьезная возможность в SUT)

У меня есть две вещи, которые меня интересуют:
состояние - «Complete» - желаемое состояние
loopcount - для завершения не должно быть более 10 циклов

Я успешно извлекаю «состояние» из экстрактора JSON и определил «loopcount» как элемент Counter в контроллере While. Оба успешно получают соответствующую информацию.

Проблема, с которой я столкнулся - это мое условие javascript в контроллере while, оно продолжает работать Это мой код:

${__javaScript("${state}"!="COMPLETE"||"${loopcounter}" < 10),)}

Я хочу, чтобы он выходил из цикла, когда либо состояние = Complete, либо loopcounter превышает 10 циклов.

Какого черта я делаю не так?

2
Tufty 30 Авг 2017 в 15:58

3 ответа

Лучший ответ
  1. В JavaScript строки чувствительны к регистру, поэтому Complete и COMPLETE разные звери
  2. Вам не нужны кавычки вокруг переменной ${loopcounter}
  3. Я также думаю, что вы должны заменить оператор || на оператор &&

Поэтому измените свое выражение так

 ${__javaScript(("${state}"!="Complete" && ${loopcounter} < 5),)}

См. статью «Использование контроллера while в JMeter» для получения дополнительной информации.

1
Dmitri T 30 Авг 2017 в 13:27

Чтобы предотвратить бесконечные циклы, вы можете добавить его в Runtime Controller и написать максимальное количество секунд.

Вы можете проверить одну часть в то время как контроллер как ${__javaScript(${loopcounter} < 10),)}

И добавьте If Controller в цикл и отметьте одну часть if как ${__javaScript("${state}"!="COMPLETE")} и 1. добавить Test Action, чтобы остановить поток 2. установите loopcounter больше 10 и добавьте Test Action для перехода к следующей итерации цикла, а также для его выхода из строя цикла

0
user7294900 30 Авг 2017 в 13:08

Два вопроса:

  • loopCounter не должен быть преобразован в строку. Так что удалите двойные кавычки вокруг него
  • Вам нужен логический оператор И, а не ИЛИ

Это должно сделать это:

"${state}" != "COMPLETE" && ${loopcounter} < 10
0
trincot 30 Авг 2017 в 13:07