我正在尝试在不同的Android设备上并行运行自动化套件(使用Selenium Webdriver(Java) TestNG Maven实施)。这是XML中的我的代码:
<test name="Test1">
<parameter name="deviceName_" value="simulator1"/>
<parameter name="port_" value="4723"/>
<classes>
<class name="tests.TotoTests">
<methods>
<include name=".*" />
</methods>
</class>
</classes>
</test>
<!--test name="Test2">
<parameter name="deviceName_" value="simulator2"/>
<parameter name="port_" value="4725"/>
<classes>
<class name="tests.TotoTests">
<methods>
<include name=".*" />
</methods>
</class>
</classes>
</test-->
在课堂上,我有20个测试。他们每个人都有注释@Test。当我运行XML时,两个设备并行运行类Tototests。因此,我的device1(simulator1)运行20个测试,而我的device2(simulator2)也运行20个测试。
但是我想要的是,Simulator1在Tototest中运行第一个测试,而Simulator2开始在Tototests中运行第二个测试。一台设备完成后,它将在Tototests中运行第三个测试。然后,当设备之一完成时,它将运行第四个测试。因此,要进行20次测试,我只需要半场。因为每个设备将仅运行10个测试,或9个测试或11项测试。
我该怎么做?
在每个测试中添加参数并行= true。这可能起作用。同样在上面的XML中,您可以在XML文件中添加Parallel =" class"参数
用于创建多个线程并并行运行,您必须并行使用无线数计数。尝试此修改的代码:
<suite name="Suite" parallel="tests" thread-count="2" >
<test name="Test1">
<parameter name="deviceName_" value="simulator1"/>
<parameter name="URL_" value="127.0.0.1:4723/wd/hub"/>
<classes>
<class name="tests.TotoTests">
<methods>
<include name=".*" />
</methods>
</class>
</classes>
</test> <!—Test 1 -->
<test name="Test2">
<parameter name="deviceName_" value="simulator2"/>
<parameter name="URL_" value="127.0.0.2:4725/wd/hub"/>
<classes>
<class name="tests.TotoTests">
<methods>
<include name=".*" />
</methods>
</class>
</classes>
</test> <!—Test 2 -->
</suite> <!-- Suite -->
希望它能起作用。
<suite name="TestSuite" parallel="tests" thread-count="2">
<test name="Test1" preserve-order="true">
<parameter name="baseURL" value="http://www.amazon.com" />
<classes>
<class name="package.myClass" />
</classes>
</test>
<test name="Test2" preserve-order="true">
<parameter name="baseURL" value="http://www.google.com" />
<classes>
<class name="package.myClass" />
</classes>
</test>