Есть 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 пайплайне, что вероятнее более правильно, так как это вопрос инфраструктурный
Тестовые данные лучше хранить в отдельном файле вообще, ну или если храните в коде то хотябы вынесите в отдельный класс.
Вспомогательные методы тоже должны быть в отдельном классе, а тестовые классы наследоваться от базового класса в котором происходит поднятие сервера и драйвера.
Ребят, благодарю за прокачку)