如何使用Testng编程运行并行套件



我想通过不从testng.xml文件并行运行不同的测试套件。

 //Creating virtual xml file from code
 List<XmlSuite> suites = new ArrayList<XmlSuite>();
            for (String dealerID : dealerList) {
                String suiteName = dealerID;
                XmlSuite suite = new XmlSuite();
                suite.setName(suiteName);
                XmlTest test = new XmlTest(suite);
                test.setName("TestID-" + dealerID);
                test.addParameter("DataString", DataString);
                List<XmlClass> classes = new ArrayList<XmlClass>();
            // Adding multiple classes
            for (int i = 0; i < al.size(); i++) {
                classes.add(i, new XmlClass(al.get(i).toString()));
            }
                test.setXmlClasses(classes);
                test.setAllowReturnValues(true);
                suites.add(suite);
            }
            // Running testng
            TestNG tng = new TestNG();
            tng.setXmlSuites(suites);
            tng.run();

上面的代码将以串联运行所有套件,但我想平行运行它们。

suite.setParallel(XmlSuite.ParallelMode.CLASSES);
suite.setThreadCount(10);

并行模式还有其他选项 - 测试,方法等...查找API概述。

您可以在-https://jitpack.io/com/github/cbeust/testng/master-6.11-g1e1d341-83/javadoc/index.html?org/testng/testng/

我遇到了一些问题并找到了这个解决方案,该代码应起作用

suite.parallel = ParallelMode.METHODS
suite.threadCount = Runtime.getRuntime().availableProcessors() // or whatever u want

suite.setSuiteThreadPoolSize(<number of your suite>)这条线将允许在其他线程中运行每个套件。希望这会有所帮助。

要以编程方式平行运行XML套件,请使用.setSuiteThreadPoolSize(threadNumberHere)

// Running testng
TestNG tng = new TestNG();
tng.setXmlSuites(suites);
tng.setSuiteThreadPoolSize(suites.size());
tng.run();

最新更新