我正在尝试使用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并不尊重上述声明。
答案 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
实现设置线程池大小。但在那之后你无法改变它。