Сброс значения параметра JSON Extractor после выхода из контроллера контроллера - JMeter - PullRequest
0 голосов
/ 27 апреля 2018

Попытка создать запрос с помощью 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. enter image description here

  • Красная коробка: Пока контроллер
  • Красная стрелка: изменение переменной ответа
    От Ожидание до Завершение и Вступление в цикл 2

Может ли это быть причиной того, что я пропустил контроллер While из второго цикла?
Если это так; Какой подход я должен использовать, чтобы очистить значение переменной?

Если это не та причина, на которую я рассчитывал, могу ли я любезно получить помощь с указанием причины и решения?

Ответы [ 2 ]

0 голосов
/ 29 апреля 2018

удалить метод получить только 1 параметр, ключ,

удалить (ключ java.lang.String)

Так что ваш синтаксис неправильный, также сравните строку, используя равно метод, используйте:

String x = vars.get("resultStatus");

if ( "completed".equals(x) ){
    vars.remove("resultStatus");
}
0 голосов
/ 27 апреля 2018

Используйте JSR223 Sampler, чтобы сбросить значение до чего-то другого, чем ожидалось.

-TestPlan

- WhileLoop

--- JSR223

Используйте приведенное ниже в JSR223: -

vars.put("resultStatus","Reset")

Надеюсь, эта помощь.

...