0

Я хочу запустить свой набор автоматизации (реализованный с использованием Selenium Webdriver (Java) + TestNG + Maven) параллельно с возможностями нескольких браузеров. Я могу запустить его параллельно для различных возможностей использования ниже образец testng.xmlКак запустить тестовые узлы TestNG последовательно, но все внутренние классы параллельно для разных возможностей браузера?

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd"> 
<suite thread-count="5" name="Functional Test Suite" parallel="tests"> 
    <test name="Windows-FF-37.0" preserve-order="true" > 
     <parameter name="browser" value="Firefox"/> 
     <parameter name="version" value="37.0"/> 
     <parameter name="os" value="Windows"/> 
     <parameter name="os_version" value="8.1"/> 
     <parameter name="device" value=""/> 
     <classes> 
      <class name="uat.mycompany.tests.FirstTest"/> 
      <class name="uat.mycompany.tests.SecondTest"/> 
      <class name="uat.mycompany.tests.ThirdTest"/> 
      <class name="uat.mycompany.tests.FourthTest"/> 
     </classes> 
    </test> 
    <test name="MAC-Yosemite-Chrome-36.0" preserve-order="true"> 
     <parameter name="browser" value="Chrome"/> 
     <parameter name="version" value="36.0"/> 
     <parameter name="os" value="OS X"/> 
     <parameter name="os_version" value="Yosemite"/> 
     <parameter name="device" value=""/> 
     <classes> 
      <class name="uat.mycompany.tests.FirstTest"/> 
      <class name="uat.mycompany.tests.SecondTest"/> 
      <class name="uat.mycompany.tests.ThirdTest"/> 
      <class name="uat.mycompany.tests.FourthTest"/> 
     </classes> 
    </test> 
</suite> 

Но когда я запускаю этот testng.xml, он начинается с «FirstTest» на оба виртуальных машинах; один с Chrome + Mac & другой с конфигурацией Forefox + Windows. Я НЕ хочу этого, потому что данные, измененные одним скриптом, вызывают другой сценарий.

Мое требование состоит в том, чтобы запускать все классы из одного узла параллельно и узлы в последовательности. Как работа, я всегда могу поместить имена классов в разном порядке в разные тестовые узлы, но поскольку у меня есть сотни тестовых классов, это нерешенное решение.

Кроме того, в конечном итоге я хочу настроить эти параметры через некоторый файл свойств, чтобы я мог легко управлять средой запуска.

ответ

1

Вы можете выполнить следующие действия:

  • Определение 2 различных наборов (XML-файлы) для различных тестов.
  • для каждого упоминания ванной: thread-count="4" parallel="classes"
  • Создайте третий набор (XML-файл) для запуска выше 2 файлов последовательно (не говоря уже о поточно-COUNT & параллельных параметров для набора.)

Первый XML-файл:

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd"> 
<suite thread-count="5" name="Functional Test Suite1" parallel="classes"> 
    <test name="Windows-FF-37.0" preserve-order="true" > 
     <parameter name="browser" value="Firefox"/> 
     <parameter name="version" value="37.0"/> 
     <parameter name="os" value="Windows"/> 
     <parameter name="os_version" value="8.1"/> 
     <parameter name="device" value=""/> 
     <classes> 
      <class name="uat.mycompany.tests.FirstTest"/> 
      <class name="uat.mycompany.tests.SecondTest"/> 
      <class name="uat.mycompany.tests.ThirdTest"/> 
      <class name="uat.mycompany.tests.FourthTest"/> 
     </classes> 
    </test> 
</suite> 

Второй XML файл:

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd"> 
<suite thread-count="5" name="Functional Test Suite2" parallel="classes"> 
    <test name="MAC-Yosemite-Chrome-36.0" preserve-order="true"> 
     <parameter name="browser" value="Chrome"/> 
     <parameter name="version" value="36.0"/> 
     <parameter name="os" value="OS X"/> 
     <parameter name="os_version" value="Yosemite"/> 
     <parameter name="device" value=""/> 
     <classes> 
      <class name="uat.mycompany.tests.FirstTest"/> 
      <class name="uat.mycompany.tests.SecondTest"/> 
      <class name="uat.mycompany.tests.ThirdTest"/> 
      <class name="uat.mycompany.tests.FourthTest"/> 
     </classes> 
    </test> 
</suite> 

Третий XML файл (нужно выполнить этот файл):

<suite name="suite of suites"> 
    <suite-files> 
     <suite-file path="Functional Test Suite1.xml" /> 
     <suite-file path="Functional Test Suite2.xml" /> 
    </suite-files> 
</suite> 
-1

Вы можете написать код, как показано ниже, он будет работать.

+0

Где пример кода? – 9ikhan

0

Для приведенного выше примера установить <suite thread-count="4" name="Functional Test Suite" parallel="classes">

Если вы установили thread-count меньше, чем число classes внутри test, тогда tests будет работать последовательно, но classes будет работать параллельно. Как только все тесты classes будут запущены в test, начнется следующее: test.

+0

Привет, 9ikhan, я попробовал несколько способов, используя ваше предложение, но каждый раз, когда он запускается только один поток. set thread-count = "4" parallel = "classes", но это не помогло. Я тоже пробовал это раньше. Пожалуйста, дайте мне знать, если у вас есть какое-либо другое решение. – Vijay

0

<test name="api test" parallel="methods"> 

    <groups> 

     <run> 
      <include name="test_proxy" /> 
     </run> 

    </groups> 

    <classes> 
     <class name="com.spire.test.TestAutomation" /> 
    </classes> 

</test> 

<test name="api test1" parallel="methods"> 

    <groups> 

     <run> 
      <include name="test" /> 
     </run> 

    </groups> 

    <classes> 
     <class name="com.spire.test1.TestAutomation1" /> 
    </classes> 

</test> 

 Смежные вопросы

  • Нет связанных вопросов^_^