【问题标题】:How to run testNG en parallel but for different tests如何并行运行 testNG 但针对不同的测试
【发布时间】:2018-05-28 16:39:29
【问题描述】:

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

我该怎么做?

【问题讨论】:

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


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    要创建多个线程并并行运行,您必须使用没有线程数的并行。 试试这个修改后的代码:

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

    希望它会起作用。

    【讨论】:

      【解决方案3】:
      <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>
      

      【讨论】:

      • 请不要在多个问题上发布exact same answer。将问题标记为重复问题。
      猜你喜欢
      • 1970-01-01
      • 2019-04-12
      • 1970-01-01
      • 1970-01-01
      • 2021-03-15
      • 2018-09-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多