如何使用Testng以编程方式运行并行套件?

时间:2017-04-18 05:54:27

标签: 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();

上面的代码将运行所有套件,但我想并行运行它们。

4 个答案:

答案 0 :(得分:1)

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/

查找详细信息

答案 1 :(得分:0)

我遇到了一些问题,找到了解决方案,此代码应该可以工作

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

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