按顺序和并行运行TestNG组

时间:2014-06-18 15:02:41

标签: testng

好的,所以参考TestNG doc我可以使用<suite parallel="tests">顺序(默认情况下在测试套件中)或并行运行测试

现在这是我的TestNG配置

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Complete test suite">
    <listeners>
        <listener class-name="com.uas.test.portlet.integration.util.WebDriverListener" />
        <listener class-name="org.uncommons.reportng.HTMLReporter" />
    </listeners>
    <test name="Parallel tests" parallel="methods" thread-count="4">
        <groups>
            <run>
              <exclude name="sequential-test"></exclude>
            </run>
        </groups>
        <packages>
            <package name="com.uas.test.portlet.integration.main" />
            <package name="com.uas.test.portlet.integration.main.categorymanager" />
            <package name="com.uas.test.portlet.integration.main.admin" />
        </packages>
    </test>
    <test name="Sequential tests" parallel="false" >
        <groups>
            <run>
                <include name="sequential-test"></include>
            </run>
        </groups>
        <packages>
            <package name="com.uas.test.portlet.integration.main" />
            <package name="com.uas.test.portlet.integration.main.categorymanager" />
            <package name="com.uas.test.portlet.integration.main.admin" />
        </packages>
    </test>
</suite>

如您所见,我有两种类型的测试:可以并行运行的测试和其他应该按顺序运行的测试。我的套件中没有parallel=tests属性,所以<test>标记以顺序运行,这样我的第一个并行测试组首先运行,然后是顺序运行。

这是完美的,但我想比这更进一步,并且我的顺序测试有2个子组,每个子组可以并行运行彼此,但两者都经过主要的并行测试......遗憾的是我无法做到这一点...... 总结一下我的想法:

1. RUN Parallel tests main group 
THEN
2. RUN Sequential tests main group
   --> Sequential subgroup A RUNS IN PARALLEL with Sequential subgroup B (test 1 from subgroup A could run in parallel with test 3 from subgroup B, they are independant)
   --> Each test within subgroup A should run sequentially
   --> Each test within subgroup B should run sequentially

有关如何使用TestNG配置文件的任何想法? (我想避免使用Ant等)。

2 个答案:

答案 0 :(得分:1)

两个独立的套房可能有所帮助。它们将按顺序执行。根据您的需要,将测试置于其中。

 <suite-files>
   <suite-file path="./suite1.xml" />
   <suite-file path="./suite2.xml" />
  </suite-files>

答案 1 :(得分:0)

从单个套件中运行单独套件的步骤。

(1)创建一个新的套件xml文件,比如MasterSuite.xml,其中包含套件列表:

<suite name="allSuites">
 <suite-files>
   <suite-file path="suite1.xml" />
   <suite-file path="suite2.xml" />
  </suite-files>
</suite>

(2)要执行此套件,请使用有关如何执行任何xml套件的一般方法。

注意:套件文件路径是相对于MasterSuite.xml所在的位置。

参考:http://testng.org/doc/documentation-main.html#parallel-running