Декоратор — это структурный паттерн проектирования, позволяющий динамически добавлять новые обязанности объектам, оборачивая их в специальные объекты-декораторы. Он предоставляет более гибкую альтернативу наследованию для расширения функциональности.
Ключевые идеи:
- Оборачивание: Декоратор содержит ссылку на оборачиваемый объект.
- Делегирование: Декоратор делегирует вызовы методов оборачиваемому объекту, при этом может выполнять дополнительную логику до или после вызова.
- Расширение функциональности: Позволяет добавлять поведение объектам без изменения их структуры или использования подклассов.
Применение в QA Automation:
- Логирование действий: Добавление логирования к методам взаимодействия с элементами страницы.
- Обработка исключений: Добавление универсальной обработки исключений к вызовам функций.
- Повторные попытки: Реализация механизма повторных попыток выполнения flaky тестов или действий.
- Внедрение пред/пост-условий: Выполнение определенных действий до или после основного шага теста.
Пример на Python:
python