TESTNG:如何在运行套件时动态更改线程数

时间:2018-03-15 10:30:01

标签: java selenium testng selenium-grid selenium-grid2

我正在尝试使用selenium网格实现并行运行的TestNG测试,其中网格连接了动态节点。根据网格中的节点数量,我想增加或减少TestNG中的线程数。

如果是这样的话怎么可能?

我试过以下案例。

public class SuiteAlterer implements IAlterSuiteListener {

    @Override
    public void alter(List<XmlSuite> suites) {
        // TODO Auto-generated method stub
        System.err.println("**Alter is invoked**");
        int count = NodeInfoFromGrid.getNumberOfNodes();//returns number of grid nodes that are free.
        if (count <= 0) {
            return;
        }
        for (XmlSuite suite : suites) {
            suite.setThreadCount(count);
        }
    }

}

在监听器OnStart(ITestContext context)中添加以下声明:

context.getSuite().getXmlSuite().setThreadCount(NodeInfoFromGrid.getNumberOfNodes());

但TestNG并不尊重上述声明。

2 个答案:

答案 0 :(得分:1)

@BeforeSuite(alwaysRun = true)
public void beforeSuite(ITestContext context) throws Exception {
    try {

        context.getSuite().getXmlSuite().setThreadCount(3);
        //context.getSuite().getXmlSuite().getVerbose();
    } catch (Exception e) {
        throw e;
    }
}

答案 1 :(得分:0)

你不能按照你的方式做到这一点。 TestNG允许您在开始执行之前确定线程池大小。但是一旦测试开始执行,你就不能在测试开始执行后改变池大小(即增加或减少它)。

当TestNG开始执行时,您可以通过IAlterSuiteListener实现设置线程池大小。但在那之后你无法改变它。