Поведение глобальной переменной Jmeter Groovy - PullRequest
0 голосов
/ 09 мая 2018

Я написал скрипт в Jmeter, как показано ниже:

vars.put("status","0");
if(vars.get("status") == "1"){
    __setProperty(totalAmount, ""+ (Integer.parseInt(${__property(totalAmount)}) + 150))};
}
else{    
    AssertionResult.setFailureMessage("incorrect status");
    AssertionResult.setFailure(true);
}

totalAmount - глобальная переменная. Даже если для статуса установлено значение 0, общая сумма увеличивается на 150. В чем может быть проблема? Пожалуйста помоги. Я новичок в Jmeter & Groovy.

1 Ответ

0 голосов
/ 09 мая 2018
  1. Не использовать Функции и / или переменные JMeter непосредственно внутри скрипта Groovy как:

    • они конфликтуют с Groovy GString Templates
    • они конфликтуют с функцией кэширования Groovy
    • они могут преобразоваться во что-то, что приведет к сбою компиляции

    , поэтому обновите ваш код так:

    vars.put("status","0");
    if(vars.get("status") == "1"){
       props.put(totalAmount, (props.get('totalAmount') as int) + 150)
    }
    else{    
        AssertionResult.setFailureMessage("incorrect status");
        AssertionResult.setFailure(true);
    }
    
  2. Свойства JMeter global для всей JVM, поэтому, если у вас установлено ever , установите это свойство - оно будет иметь значение, пока вы не обновите его или не перезапустите JMeter. Поэтому, если вы хотите начать «очистку», вам нужно установить нулевое значение свойства, например:

    props.put('totalAmount', '0')
    

    или удалите его полностью как:

    props.remove('totalAmount')
    

См. Apache Groovy - почему и как его использовать * Статья 1035 * для получения дополнительной информации об использовании сценариев Groovy в JMeter.

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