如何并行运行testNG但是针对不同的测试

时间:2017-12-14 14:37:53

标签: selenium automated-tests testng appium parallel-testing

我正在尝试在不同的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-->

在课堂TotoTests中,我有20个测试。每个都有@Test注释。当我运行xml时,两个设备并行运行TotoTests类。所以我的device1(simulator1)运行了20次测试,而我的device2(simulator2)也运行了20次测试。

但我想要的是,simulator1在TotoTests中运行第一个测试,并且模拟器2开始在TotoTests中运行第二个测试。当一个设备完成后,它将在TotoTests中运行第三个测试。然后当其中一个设备完成时,它将运行第四个测试。所以要进行20次测试,我只需要一半的时间。因为每个设备只能运行10次测试,或9次测试,或11次测试....但不是20次测试。

我该怎么做?

3 个答案:

答案 0 :(得分:0)

在每次测试时添加参数parallel = true。这可能会奏效。同样在上面的xml中你可以添加parallel =&#34; Class&#34; xml文件中的参数

答案 1 :(得分:0)

要创建多个线程并运行并行,您必须使用并行而不使用线程计数。 试试这个修改过的代码:

<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 -->

希望它能奏效。

答案 2 :(得分:0)

<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>