Jmeter:如何通过代码禁用侦听器(groovy)

Jmeter:如何通过代码禁用侦听器(groovy),jmeter,Jmeter,我试图用groovy代码禁用view Resultls树。代码运行、正确显示和更改名称和enable属性(如日志所报告的),但不会实际停止GUI中的信息,也不会由侦听器写入文件(GUI和非GUI模式)。监听器在最后被处理,所以在安装线程中执行的代码应该对其他线程的日志记录产生影响。启用的属性做什么 我已经看到了通过就地编辑jmeter计划文件()的解决方法,但我希望使用内部jmeter/groovy解决方案 代码(有趣的是,每个侦听器都被处理了两次,首先打印查看结果树,然后已经打印foo): i

我试图用groovy代码禁用view Resultls树。代码运行、正确显示和更改名称和enable属性(如日志所报告的),但不会实际停止GUI中的信息,也不会由侦听器写入文件(GUI和非GUI模式)。监听器在最后被处理,所以在安装线程中执行的代码应该对其他线程的日志记录产生影响。启用的
属性做什么

我已经看到了通过就地编辑jmeter计划文件()的解决方法,但我希望使用内部jmeter/groovy解决方案

代码(有趣的是,每个侦听器都被处理了两次,首先打印
查看结果树
,然后已经打印
foo
):

import org.apache.jmeter.engine.StandardJMeterEngine
导入org.apache.jorphan.collections.HashTree
导入org.apache.jorphan.collections.SearchByClass
导入org.apache.jmeter.reporters.ResultCollector
def engine=ctx.getEngine()
def test=engine.getClass().getDeclaredField(“测试”)
test.setAccessible(true)
def testPlanTreeRC=(HashTree)test.get(引擎)
def rcSearch=new SearchByClass(ResultCollector.class)
TestPlantrerc.traverse(rcSearch)
def rcTrees=rcSearch.getSearchResults()
用于(RCT树中的rc){
log.error(rc.getName())
if(rc.isEnabled()){log.error(“yes”)}else{log.error(“no”)}
rc.setEnabled(false)
if(rc.isEnabled()){log.error(“yes”)}else{log.error(“no”)}
如果(rc.getName()=“查看结果树”){rc.setName(“foo”)}
}

添加:当监听器在GUI的测试计划中被禁用时,上面的遍历树代码找不到它。

disabled
属性在启动时由JMeter使用/检查,因此JMeter代码中必须有更改

我打开一个配件

你可以继续

有,使用Taurus工具或使用Java执行JMeter并禁用它:

HashTree-testPlanTree=SaveService.loadTree(新文件(“/path/to/your/testplan”);
SearchByClass ListenerSearch=新的SearchByClass(ResultCollector.class);
testPlanTree.transverse(listenersearch);
Collection listeners=listenersSearch.getSearchResults();
forEach(listener->listener.setProperty(TestElement.ENABLED,false));
configure(testPlanTree);
jmeter.run();
import org.apache.jmeter.engine.StandardJMeterEngine
import org.apache.jorphan.collections.HashTree
import org.apache.jorphan.collections.SearchByClass
import org.apache.jmeter.reporters.ResultCollector
def engine = ctx.getEngine()
def test = engine.getClass().getDeclaredField("test")
test.setAccessible(true)
def testPlanTreeRC = (HashTree) test.get(engine)
def rcSearch = new SearchByClass<>(ResultCollector.class)
testPlanTreeRC.traverse(rcSearch)
def rcTrees = rcSearch.getSearchResults()
for (rc in rcTrees) {
    log.error(rc.getName())
    if (rc.isEnabled()) {log.error("yes")} else {log.error("no")}
    rc.setEnabled(false)
    if (rc.isEnabled()) {log.error("yes")} else {log.error("no")}
    if (rc.getName()=="View Results Tree") {rc.setName ("foo")}
}
HashTree testPlanTree = SaveService.loadTree(new File("/path/to/your/testplan"));
SearchByClass<ResultCollector> listenersSearch = new SearchByClass<>(ResultCollector.class);
testPlanTree.traverse(listenersSearch);
Collection<ResultCollector> listeners = listenersSearch.getSearchResults();
listeners.forEach(listener -> listener.setProperty(TestElement.ENABLED, false));
jmeter.configure(testPlanTree);
jmeter.run();