Запуск сервера Appium программно в @BeforeSuite

Теги: #<Tag:0x00007f7387a429f8> #<Tag:0x00007f7387a42908> #<Tag:0x00007f7387a427f0> #<Tag:0x00007f7387a426d8> #<Tag:0x00007f7387a425e8> #<Tag:0x00007f7387a424f8>

Есть Suite из 30 классов внутри которых тесты
Вопрос в каком классе прописать метод @BeforeSuite который программно (через shell-команду) стартует сервер Appium-a чтобы прогнать эти 30 классов?
Тесты на TestNG. запускаются в рандомном порядке

В “BaseTest” от которого наследуются все тестовые классы

Есть пример на гитхабе или где-нибудь? У меня сейчас занят extends другим классом. Или вы про другое наследование?

У всех ваших тестов есть общие вещи такие как

  • Запуск аппиум сервера
  • Поднятие самого драйвера
  • и т.д.
    Что-то выполняется в @BeforeSuite, что-то в @BeforeMethod

Обычно эти все базовые вещи которые нужны для каждого теста выносят в отдельный класс “BaseTest”, а уже все тестовые классы от него наследуются.

То что у вас Extends занят другим классом то тут вы не совсем верно выстраиваете архитектуру, но вообще в Java можно вот так
Class_A - base class
Class_B extends Class_A
Class_C extends Class_B
В классе “Class_C” будут доступны методы классов А и B

Понял. У меня все тестовые классы наследуются от класса Config в котором определены все тестовые данные, такие как пароли/номера телефонов и вспомогательные методы. Это плохой подход? нужно как-то по другому к этим данным обращаться?

Точно не идеальный. Для таких целей используют вспомогательные классы. Их называют по-разному: Helper, Utils etc., но главная идея в том чтобы реализовать Single responsibility принцип. Один класс - одно назначение. Как минимум чтобы всем понятно было, что методы по генерации даты-времени лежат в DateTimeUtils, методы по созданию новых юзеров - в классе UsersHelper и т.д.

А пароли-телефоны в коде хранить вообще плохая практика. Такие вещи чаще всего зависят от энвайрмента (стенда) на котором вы тест запускаете. Это обычно помещается в Java .properties файлы (или .yaml, суть такая же)

Еще более продвинутым и секьюрным вариантом являются Secrets Manager тулы вроде AWS Secrets Manager, Vault etc.

по изначальному вопросу Вам верно ответили - в BaseTest логичнее поместить. Либо непосредственно в cicd пайплайне, что вероятнее более правильно, так как это вопрос инфраструктурный

3 симпатии

Тестовые данные лучше хранить в отдельном файле вообще, ну или если храните в коде то хотябы вынесите в отдельный класс.
Вспомогательные методы тоже должны быть в отдельном классе, а тестовые классы наследоваться от базового класса в котором происходит поднятие сервера и драйвера.

1 симпатия

Ребят, благодарю за прокачку)