groovy.lang.MissingPropertyException: Нет такого свойства: basePath для класса: Script466 в Apache jmeter - PullRequest
2 голосов
/ 02 ноября 2019

Мне нужно разделить несколько переменных между двумя группами потоков в проекте Apache jmeter. Я обнаружил, что переменные не могут быть разделены между группами потоков, и я должен использовать свойства. Я написал приведенный ниже скрипт внутри препроцессора JSR223 в первой группе потоков, чтобы установить значения свойств. Он запускается без каких-либо исключений.

@Grab('org.yaml:snakeyaml:1.17')

import org.yaml.snakeyaml.Yaml;
import org.apache.jmeter.services.FileServer;

String baseDir = FileServer.getFileServer().getBaseDir()

Yaml ymlparser = new Yaml()

Map config = ymlparser.load((baseDir+"/config/tool.yaml" as File).text)

String base_path = baseDir + "/data/" + trafficConfig.find{it.key=="name"}?.value

${__setProperty(basePath, base_path)};

Если я зарегистрирую значение свойства basePath из того же препроцессора JSR223, он вернет правильное значение.

Тогда я читаюзначение свойства из препроцессора JSR223 во второй группе потоков, как показано ниже.

${__property(basePath, base_path)}
log.info( base_path );

Это будет через исключение ниже в журнале jmeter.

2019-11-02 18:54: 19,353 ОШИБКА oajmJSR223PreProcessor: Проблема в сценарии JSR223, препроцессоре JSR223 javax.script.ScriptException: javax.script.ScriptException: groovy.lang.MissingPropertyException: Нет такого свойства: basePath для класса: Script470 в org3.ygov.jov.jpg.eval (GroovyScriptEngineImpl.java:162) ~ [groovy-all-2.4.16.jar: 2.4.16] в javax.script.AbstractScriptEngine.eval (AbstractScriptEngine.java:233) ~ [?: 1.8.0_221] в организации.apache.jmeter.util.JSR223TestElement.processFileOrScript (JSR223TestElement.java:225) ~ [ApacheJMeter_core.jar: 5.1.1 r1855137] в org.apache.jmeter.modifiers.JSR223PreProПроцессорorg. jar: 5.1.1 r1855137] в org.apache.jmeter.threads.JMeterThread.run (JMeterThread.java:253) [ApacheJMeter_core.jar: 5.1.1 r1855137] в java.lang.Thread.run (Thread.java:748)) [?: 1.8.0_221]

1 Ответ

2 голосов
/ 03 ноября 2019

Используйте props для установки свойства

props.put("basePath", base_path);

Не используйте ${} синтаксис в компонентах JSR223

...