groovy.lang.MissingPropertyException:ApacheJMeter中的类:Script466没有这样的属性:basePath

groovy.lang.MissingPropertyException:ApacheJMeter中的类:Script466没有这样的属性:basePath,groovy,jmeter,jsr223,Groovy,Jmeter,Jsr223,我需要在ApacheJMeter项目中的两个线程组之间共享一些变量。我发现变量不能在线程组之间共享,我必须使用属性。我已经在第一个线程组的JSR223预处理器中编写了下面的脚本来设置属性值。它毫无例外地运行 @Grab('org.yaml:snakeyaml:1.17') import org.yaml.snakeyaml.Yaml; import org.apache.jmeter.services.FileServer; String baseDir = FileServer.getFi

我需要在ApacheJMeter项目中的两个线程组之间共享一些变量。我发现变量不能在线程组之间共享,我必须使用属性。我已经在第一个线程组的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:19353错误o.a.j.m.JSR223预处理器:出现问题 JSR223脚本,JSR223预处理器javax.script.ScriptException: javax.script.ScriptException:groovy.lang.MissingPropertyException:否 这样的属性:类的basePath:Script470位于 org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.eval(GroovyScriptEngineImpl.java:162) ~[groovy-all-2.4.16.jar:2.4.16]at eval(AbstractScriptEngine.java:233) 约[?:1.8.0_221]at org.apache.jmeter.util.jsr23testelement.processFileOrScript(jsr23testelement.java:225) ~[ApacheJMeter_core.jar:5.1.1 r1855137]at org.apache.jmeter.modifiers.JSR223PreProcessor.process(JSR223PreProcessor.java:44) [ApacheJMeter_components.jar:5.1.1 r1855137]at org.apache.jmeter.threads.JMeterThread.runPreProcessors(JMeterThread.java:935) [ApacheJMeter_core.jar:5.1.1 r1855137]at org.apache.jmeter.threads.JMeterThread.executeSamplePackage(JMeterThread.java:537) [ApacheJMeter_core.jar:5.1.1 r1855137]at org.apache.jmeter.threads.JMeterThread.processSampler(JMeterThread.java:486) [ApacheJMeter_core.jar:5.1.1 r1855137]at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:253) [ApacheJMeter_core.jar:5.1.1 r1855137]at java.lang.Thread.run(Thread.java:748)[?:1.8.0_221]


使用
props
设置属性

props.put("basePath", base_path);

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

我使用的是ApacheJMeter版本5.1.1,我已经将ApacheIvy-2.5.0.jar文件添加到库中。我应该使用props.get(“basePath”)检索属性basePath。成功了。谢谢