0

我正在尝试在不同的 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 中的第一个测试,simulator2 开始运行 TotoTests 中的第二个测试。当一台设备完成后,它将运行 TotoTests 中的第三个测试。然后当其中一台设备完成后,它将运行第 4 次测试。所以要运行 20 个测试,我只需要一半的时间。因为每个设备将只运行 10 次测试,或 9 次测试,或 11 次测试......但不是 20 次测试。

我怎样才能做到这一点?

4

3 回答 3

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>
于 2019-10-29T17:43:10.577 回答
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 -->

希望它会奏效。

于 2017-12-15T08:29:23.233 回答
0

在每次测试中添加参数 parallel=true。这可能会奏效。同样在上面的 xml 中,您可以在 xml 文件中添加 parallel="Class" 参数

于 2017-12-14T20:27:27.337 回答