我想针对多个浏览器功能并行运行我的自动化套件(使用 Selenium Webdriver (Java) + TestNG + Maven 实现)。我可以使用下面的示例 testng.xml 并行运行它以获得不同的功能
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite thread-count="5" name="Functional Test Suite" parallel="tests">
<test name="Windows-FF-37.0" preserve-order="true" >
<parameter name="browser" value="Firefox"/>
<parameter name="version" value="37.0"/>
<parameter name="os" value="Windows"/>
<parameter name="os_version" value="8.1"/>
<parameter name="device" value=""/>
<classes>
<class name="uat.mycompany.tests.FirstTest"/>
<class name="uat.mycompany.tests.SecondTest"/>
<class name="uat.mycompany.tests.ThirdTest"/>
<class name="uat.mycompany.tests.FourthTest"/>
</classes>
</test>
<test name="MAC-Yosemite-Chrome-36.0" preserve-order="true">
<parameter name="browser" value="Chrome"/>
<parameter name="version" value="36.0"/>
<parameter name="os" value="OS X"/>
<parameter name="os_version" value="Yosemite"/>
<parameter name="device" value=""/>
<classes>
<class name="uat.mycompany.tests.FirstTest"/>
<class name="uat.mycompany.tests.SecondTest"/>
<class name="uat.mycompany.tests.ThirdTest"/>
<class name="uat.mycompany.tests.FourthTest"/>
</classes>
</test>
</suite>
但是当我运行这个 testng.xml 时,它在两个虚拟机上都以“FirstTest”开头;一个使用 Chrome+Mac,另一个使用 Forefox+Windows 配置。我不想要这个,因为一个脚本修改的数据使另一个脚本失败。
我的要求是从一个节点并行运行所有类,并按顺序运行节点。作为一种解决方法,我总是可以在不同的测试节点中以不同的顺序放置类名,但由于我有数百个测试类,这不是可行的解决方案。
另外,最终我想通过一些属性文件设置这些参数,以便我可以轻松管理运行环境。