Автоматизация QA

Засел за рефакторинг старенького фреймворка, спустя 4 года, понял, есть, что переписать) интересно теперь, каков будет конечный результат, аж глаза пересохли🤣

Используемые паттерны:

Factory / Factory Method

PageFactory.create(page, page_type) создаёт объекты нужного класса в зависимости от PageType. Это классическая фабрика, скрывающая выбор конкретного класса за единым интерфейсом. Registry

PageFactory._registry хранит соответствие PageType -> класс страницы. Регистрация выполняется через декоратор @PageFactory.register(PageType.X), что делает добавление новых типов простым. Decorator

PageFactory.register() возвращает декоратор, который регистрирует класс в реестре. Это приём из паттерна декоратор в смысле «функция, оборачивающая класс и выполняющая побочное действие». Abstract Base Class / Template

BasePage(ABC) и абстрактный метод get_mock_data(). Подклассы обязаны реализовать этот метод, что задаёт общий контракт страниц. Enum как дискриминатор

PageType(Enum) используется как типизированный ключ для выбора страницы.

Если кому-то интересно, конечный результат выложу в GitHub, сможете применить на своих проектах, напишу подробную документацию по фреймворку

Автоматизация QA | Сетка — социальная сеть от hh.ru Автоматизация QA | Сетка — социальная сеть от hh.ru