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

时间:2019-04-22 14:36:12

标签: jmeter

我试图通过常规代码禁用视图结果树。该代码运行,正确显示并更改了名称和enable属性(如日志所报告),但实际上既没有在GUI中停止信息,也没有通过侦听器(GUI和非GUI模式)写入文件。侦听器在最后处理,因此恕我直言,在setUp线程中执行的代码应对其他线程的日志记录有效。 enabled属性有什么用?

我已经看到了一种通过就地编辑jmeter计划文件(JMeter: how can I disable a View Results Tree element from the command line?)来解决问题的方法,但是我想要内部jmeter / groovy解决方案。

代码(有趣的是,每个侦听器都被处理了两次,第一次打印view resuts tree,接下来已经打印foo):

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")}
}

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

1 个答案:

答案 0 :(得分:0)

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

我打开了一个增强功能Add option to disable View Results Tree/Listeners in non GUI

您可以在

vote

other options executing JMeter externally,使用Taurus工具或使用Java执行JMeter并将其禁用:

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();