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

zpqajqem  于 12个月前  发布在  Apache
关注(0)|答案(1)|浏览(136)

我需要在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 PreProcessor记录属性'basePath'的值,它将返回正确的值。
然后,我从第二个线程组中的JSR223 PreProcessor中阅读属性值,如下所示。

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

它将通过jmeter日志中的以下异常。
2019 - 11 - 02 18:54:19,353错误o.a.j.m.JSR223预处理器:JSR223脚本中的问题,JSR223预处理器javax. script. ScriptException:javax.script.ScriptException: groovy. lang. MissingPropertyException:无此类属性:类的basePath: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]在org.apache.jmeter.modifiers.JSR223PreProcessor.process(JSR223PreProcessor.java:44)[ApacheJMeter_components. jar:5.1.1 r1855137]在org.Apachejmeter。线程。JMeterThread。runPreProcessors(JMeterThread.java:935)[ApacheJMeter_core. jar:5.1.1 r1855137]在org.Apachejmeter。线程。JMeterThread。executeSamplePackage(JMeterThread.java:537)[ApacheJMeter_core. jar:5.1.1 r1855137]在org.Apachejmeter。线程。JMeterThread。processSampler(JMeterThread.java:486)[ApacheJMeter_core. jar:5.1.1 r1855137]在www.example.com(JMeterThread.java:253)[ApacheJMeter_core. jar:5.1.1 r1855137],org.apache.jmeter.threads.JMeterThread.run:1.8.0_221]

cbeh67ev

cbeh67ev1#

使用props设置属性

props.put("basePath", base_path);

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

相关问题