2014-01-21 4 views
1

У меня есть 3 файла теста NG. Machine1.xml:Нужно запускать тесты и тесты TestNG параллельно

<suite name="Machine1" verbose="1" parallel="tests" thread-count="1"> 
<test name="LoginTest"> 
<classes> 
<class name="test.app.home.LoginTest"/> 
</classes> 
</test> 
</suite> 

Machine2.xml

<suite name="Machine2" verbose="1" parallel="tests" thread-count="1"> 
<test name="LoginTest"> 
<classes> 
<class name="test.app.home.LoginTest"/> 
</classes> 
</test> 
</suite> 

MachineMain.xml

<suite name="testng" verbose="1" parallel="tests" thread-count="2"> 
<tests> 
<test name="Machine1"> 
<suite-files> 
<suite-file path="Machine1.xml"/> 
</suite-files> 
</test> 
<test name="Machine2"> 
<suite-files> 
<suite-file path="Machine2.xml"/> 
</suite-files> 
</test> 
</tests> 
</suite> 

Примечание: Я бегу MachineMain.xml через затмение. Я написал код, чтобы открыть remoteWebDriver внутри метода установки, и у меня есть аннотация @BeforeSuite чуть выше метода установки.

Что я пытаюсь: у меня есть концентратор и 2 узла, оба узла имеют maxInstance как 1. Я пытаюсь запустить 2 xml - Machine1.xml и Machine2.xml (Suites) параллельно, открыв один браузер в каждом узле - в основном пакет Machine1.xml в одном узле (Machine 1) и в пакете Machine2.xml в другом узле (Machine 2).

Что такое happeing: концентратор отправляет первый запрос Machine1.xml на один узел (Machine 1), а после завершения выполнения второй Machine2.xml выбирается и отправляется во второй узел (Machine 2).

Я ожидал, что, так как я специфицировал «набор-файл» внутри тега «test» и задал «параллельное» значение «тесты» и «количество потоков» до 2 в MachineMain.xml, он автоматически выполнил бы апартаменты расположены параллельно.

Пожалуйста, помогите мне решить проблему.

+0

Вы используете тот же тест из двух xmls ?? Если вы можете определить фактическое требование тестирования, мы можем предложить решение. – Akbar

+0

Настоящим требованием является то, что я буду использовать тот же набор тестов для разных версий IE, которые находятся на разных машинах. Поэтому, если мне нужно запускать пакет только против IE11 и IE10, тогда у меня будет 2 тестовых тега с одним тестовым тегом, имеющим путь к файлу пакета, как xml, который будет иметь параметры для IE11 и другой тег для IE10. Итак, у меня будет xml (ы) с различными параметрами, которые легко доступны, и в соответствии с требованием я включу/исключу путь пакета-файла в основном xml. – user2356679

ответ

0

Вам не нужно два xml для вашего требования. Выполните следующие действия, и вы должны провести параллельный параллельный тест.

Я предполагаю, что, поскольку у вас есть настройка сетки, вы знаете о требуемых возможностях. Если не сослаться на эту ссылку https://code.google.com/p/selenium/wiki/Grid2

  1. Создайте два теста в одном тестовом xml и получите параметр для версии браузера для каждого теста. Keep parallel = tests, thread count = 2 в теге пакета.
  2. Используйте версию в возможностях объекта в вашем методе настройки, чтобы он соответствовал конфигурации узла.
+0

Спасибо. Я устал от этого раньше, и хотя это позволяет мне проводить тестирование параллельно, проблема, с которой я столкнулся с этой настройкой, - У меня есть около 10 компонентов для тестирования. Я написал sctipt, чтобы проверить их в 10 отдельных классах. У меня есть абстрактный класс, который имеет все используемые методы, и я расширяю этот абстрактный класс из всех 10 классов. Проблема в том, что первый класс, включенный в тестовый тег, может получить доступ к глобальной переменной класса abstarct, но второй класс, упомянутый в том же тесте теста, читает его как null.Ниже приведен XML для вашего refrence. – user2356679

+0

\t \t <имя класса = "test.app.home.LoginTest" /> \t <имя класса = "test.app.home.comp1Test" /> \t user2356679

+0

Кроме того, у меня есть метод в абстрактный класс, который вернет webelement - этот метод при вызове из первого класса отлично работает, но когда он вызван из второго класса, он не может найти элемент и infact в методе, у меня есть ожидание 20 секунд, чтобы fi но он не ждет даже 2 секунды. Кроме того, другой метод абстрактного класса, который снимает снимок экрана, работает для первого класса, но при вызове второго класса он выдает исключение nullpointer. – user2356679

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