Как запустить testNG en параллельно, но для разных тестов

Я пытаюсь запустить мой пакет автоматизации (реализованный с использованием Selenium Webdriver (Java) + TestNG + Maven) параллельно на разных устройствах Android. Вот мой код в 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 параллельно. Таким образом, мое устройство 1(симулятор 1) выполняет 20 тестов, и мое устройство 2 (симулятор 2) также выполняет 20 тестов.

Но я хочу, чтобы симулятор 1 запустил первый тест в TotoTests, а симулятор 2 начал запускать второй тест в TotoTests. Когда одно устройство завершит работу, оно будет запускать третий тест в TotoTests. И тогда, когда одно из устройств закончится, оно запустит 4-й тест. Таким образом, чтобы выполнить 20 тестов, мне понадобится только половина времени. Потому что каждое устройство будет выполнять только 10 тестов, или 9 тестов, или 11 тестов.... Но не 20 тестов.

Как я могу это сделать?

2 ответа

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

Добавить параметр параллельный =true при каждом тесте. Это может сработать. Также в приведенном выше XML-файле вы можете добавить параметр parallel="Class" в XML-файл.

Для создания нескольких потоков и параллельного запуска вы должны использовать параллель без подсчета потоков. Попробуйте этот модифицированный код:

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

Надеюсь, это сработает.

Другие вопросы по тегам