groovy.lang.MissingPropertyException:无此类属性:类的basePath:Apache jmeter中的Script466

时间:2019-11-02 13:27:19

标签: groovy jmeter jsr223

我需要在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)};

如果我从同一JSR223预处理器记录属性'basePath'的值,它将返回正确的值。

然后,我正在从第二个线程组中的JSR223预处理器读取属性值,如下所示。

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

它将通过jmeter日志中的以下异常。

  

2019-11-02 18:54:19,353错误o.a.j.m.JSR223PreProcessor:问题出在   JSR223脚本,JSR223预处理器javax.script.ScriptException:   javax.script.ScriptException:groovy.lang.MissingPropertyException:否   这样的属性:类的Script470的basePath   org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.eval(GroovyScriptEngineImpl.java:162)   〜[groovy-all-2.4.16.jar:2.4.16]在   javax.script.AbstractScriptEngine.eval(AbstractScriptEngine.java:233)   〜[?:1.8.0_221]在   org.apache.jmeter.util.JSR223TestElement.processFileOrScript(JSR223TestElement.java:225)   〜[ApacheJMeter_core.jar:5.1.1 r1855137]在   org.apache.jmeter.modifiers.JSR223PreProcessor.process(JSR223PreProcessor.java:44)   [ApacheJMeter_components.jar:5.1.1 r1855137]在   org.apache.jmeter.threads.JMeterThread.runPreProcessors(JMeterThread.java:935)   [ApacheJMeter_core.jar:5.1.1 r1855137]在   org.apache.jmeter.threads.JMeterThread.executeSamplePackage(JMeterThread.java:537)   [ApacheJMeter_core.jar:5.1.1 r1855137]在   org.apache.jmeter.threads.JMeterThread.processSampler(JMeterThread.java:486)   [ApacheJMeter_core.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 个答案:

答案 0 :(得分:2)

使用props设置属性

props.put("basePath", base_path);

在JSR223组件中不要使用${}语法