groovy.lang.MissingPropertyException:没有这样的 属性:class 的 basePath:Apache jmeter 中的 Script466

groovy.lang.MissingPropertyException: No such property: basePath for class: Script466 in Apache jmeter

我需要在 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' 的值,它将 return 正确的值。

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

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

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

2019-11-02 18:54:19,353 ERROR o.a.j.m.JSR223PreProcessor: Problem in JSR223 script, JSR223 PreProcessor javax.script.ScriptException: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: basePath for class: Script470 at org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.eval(GroovyScriptEngineImpl.java:162) ~[groovy-all-2.4.16.jar:2.4.16] at javax.script.AbstractScriptEngine.eval(AbstractScriptEngine.java:233) ~[?:1.8.0_221] at org.apache.jmeter.util.JSR223TestElement.processFileOrScript(JSR223TestElement.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 组件中使用 ${} 语法