#jmeter
Вопрос:
Если я использую препроцессор JSR223 со следующим кодом:
log.info("" ${rand});
где ${rand}
находится случайная переменная, как я могу изменять эту переменную каждый раз, когда я зацикливаю этот поток?
Изменение количества потоков действительно приведет к изменению переменной при каждом запуске, в цикле она просто принимает одно значение и сохраняет его для всех остальных циклов.
Помещение его в пробоотборник JSR223 дает тот же результат. Я в основном хочу, чтобы код вел себя как пользовательский параметр.
Ответ №1:
Не вставляйте функции или переменные JMeter в тестовые элементы JSR223, потому что:
- Они могут превратиться во что-то, что приведет к сбою компиляции
- Синтаксис конфликтует с функцией GStrings Groovy
- Если вы установите
Cache compiled script if available
флажок, первое вхождение будет кэшироваться и использоваться на последующих итерациях, если вы этого не сделаете — вы потеряете преимущества производительности Groovy
При использовании этой функции убедитесь, что в коде сценария не используются переменные JMeter или вызовы функций JMeter непосредственно в коде сценария, так как кэширование будет кэшировать только первую замену. Вместо этого используйте параметры сценария.
Так:
- Либо переместите свою
${rand}
переменную в раздел «Параметры» и измените свой код наlog.info("" Parameters);
- или используйте
vars
сокращение для экземпляра класса JMeterVariables, в этом случае измените свой код следующим образом:log.info("" vars.get("rand"));
Ответ №2:
Вам нужно использовать vars, чтобы избежать кэширования/одного и того же значения
vars.get("rand")
См. Рекомендации по применению JSR223
скрипт не использует никаких переменных
${varName}
, так как кэширование будет принимать только первое значение${varName
.. Вместо этого используйтеvars.get("varName")