Автоматизация 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, сможете применить на своих проектах, напишу подробную документацию по фреймворку
· 08.05
Пока писал пост, нашел 3 бага в приложении сетки, один из которых при переносе текста к чертям стирает всё, что было набрано до этого 😭
коммент скрыт — часть юзеров считает его токсичным или некорректным
ответить
0
коммент удалён
· 09.05
достатчно давно нашел баг с исчезновением нижнего бара приложения на iOS
коммент скрыт — часть юзеров считает его токсичным или некорректным
ответить
0
ответ удалён