Попытка создать запрос с помощью JMeter, в котором запрос должен повторяться до тех пор, пока переменная JSON ($. Result.status ) ответа не будет соответствовать ожидаемому результату. Подробно, запрос должен повторяться до тех пор, пока значение переменной не переходит в состояние «завершено» из состояния «ожидание».
Для этого я использовал контроллер while со следующим условием JS. Он отлично работает в 1-й итерации / цикле и выходит из контроллера While, когда resultStatus превращается в «complete»
${__javaScript("${resultStatus}" == "pending" || "${resultStatus}" != "completed" || "${resultStatus}" == "" )}
Но, начиная со 2-го цикла и далее, контроллер while пропускается.
Я предполагаю, что причина была в том, что переменная resultStatus была назначена "выполнено" вместе с выходом для while-контроллера в 1-м цикле и остается неизменным, когда дело доходит до Пока контроллер во втором цикле. Поэтому условие становится ложным. .
С этим предположением я попытался vars.remove для BeanShellPostProcessor в While-Controller со следующим фрагментом кода. Но это не решило мою проблему.
String x = vars.get("resultStatus");
if ( x == "completed"){
vars.remove("resultStatus", "completed");}
Ниже приведена структура дерева Jmeter.
- Красная коробка: Пока контроллер
- Красная стрелка: изменение переменной ответа
От Ожидание до Завершение и Вступление в цикл 2
Может ли это быть причиной того, что я пропустил контроллер While из второго цикла?
Если это так; Какой подход я должен использовать, чтобы очистить значение переменной?
Если это не та причина, на которую я рассчитывал, могу ли я любезно получить помощь с указанием причины и решения?