Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

Паралельный запуск одного и того же теста из сьюта в зависимости от параметров

selenium
webdriver
appium
testng
Теги: #<Tag:0x00007f7b699eef58> #<Tag:0x00007f7b699eecd8> #<Tag:0x00007f7b699eeaa8> #<Tag:0x00007f7b699ee698>

(Алексей Бочаров) #1

Всем привет.

В общем интересный вопрос. Попробую объяснить на примере.
Например есть 4 браузера, неважно какие. Есть фабрика этих драйверов.
Есть testNG сьют вида:

<suite name="">
<parameters>
<test name=""></test>
<suite>

Драйвер заводится в базовом классе в отдельный тред в @BeforeTest методе

Вопрос следующий. Можно ли запустить тест из этого сьюта для всех драйверов в паралели?
Условия такие:

  1. Внутри теста никаких for(фабрика драйверов) быть не должно
  2. несколько тестов внутри сьюта с параметрами фабрики тоже не рассматривается.

Почему созрел такой вопрос. Есть 20 андроид девайсов. Тест для всех универсальный. Разница только в параметрах сьюта, в которых прописаны адреса девайсов.
Не хочется делать 20 одинаковых сьютов с разницей в параметрах.
Не хочется делать длинющий сьют с кучей тестов для каждого девайса.


(Jane Tymoschuk) #2

смотрите в сторону testNG data providers. в нем можно вычитать либо системную переменную с теми драйверами, на которых нужно запускать, либо параметр сьюта. Не намного сложнее, если вот такие тесты нужно сделать параметризированными, но тоже можно решить.


(Алексей Бочаров) #3

Дата провайдер для теста и без того используется. Он собирает данные из xml конфига и через конвертер собирает нужный мне объект, передавая его в тест.

С вопросом о чтении конфига и системных пропертей нету. Вопрос реализации запуска драйвера из теста сьюта.
Т.е. если я например в @BeforeTest поставлю цикл на фабрику девайсов(запуск цикла зависит от параметров теста, например device=all) - он просто запустит кучу дарйверов, а тест будет выполняться только на одном из них.