Изменить «Пользовательские переменные» на основе внешней переменной - PullRequest
0 голосов
/ 02 октября 2018

У меня возникли проблемы при попытке изменить пользовательские переменные на основе уже существующей переменной.

BeanShell:

String databaseSize;

if (${__P(DBsize,${DB_size})} == '0') {
vars.put("databaseSize","SmallDB"); }
    else if (${__P(DBsize,${DB_size})} == '1') 
    {vars.put("databaseSize","LargeDB");}

Пользовательские переменные

Имя: путь

Значение: ${__BeanShell (import org.apache.jmeter.services.FileServer; FileServer.getFileServer (). GetBaseDir ();)} \ $ {databaseSize}

Я хотел бы изменить путь в зависимости от того, что я храню в размер базы данных .У меня есть две папки по указанному пути: SmallDB и LargeDB.Насколько я знаю, UDV назначаются до того, как JMeter управляет моей BeanShell.

Есть ли альтернативный способ изменить путь на основе другой переменной (полученной из Jenkins или по умолчаниюполучил из файла)?

Спасибо

Ответы [ 2 ]

0 голосов
/ 02 октября 2018
  1. Начиная с JMeter 3.1 рекомендуется использовать язык Groovy для любых сценариев, главным образом потому, что Производительность Groovy намного лучше, чем у Beanshell и друзей
  2. Вы можете поместить функцию __ groovy () непосредственно в Value раздел пользовательских переменных - она ​​будет оценена при обработке элемента конфигурации
  3. Вы можете перейти к троичный оператор для преобразования вашего кода в одну меньшую строку, что-то вроде:

    ${__groovy((props.getProperty("DBsize").equals("0")) ? "SmallDB" : "LargeDB",)}
    

    Итак, ваша конфигурация будет:

    Groovy user defined variables

0 голосов
/ 02 октября 2018

Вы можете использовать vars.put для добавления переменной JMeter:

 import org.apache.jmeter.services.FileServer; 

 vars.put("path",  FileServer.getFileServer().getBaseDir());
...