Урок 12. Summary session 6
⚡ Кратко: Summary session 6
Summary session 6 — повторение ключевых тем урока 11: Page Object Model (POM), BasePage, инкапсуляция локаторов, структура POM-проекта, pytest-фикстуры с scope="class", базовый тестовый класс BaseTest.
- POM: каждая страница → класс; локаторы и методы — в классе; тесты вызывают только методы страниц
- BasePage:
find(locator),click(locator),type_text(locator, text)— общие методы для наследования - scope="class": один браузер на весь класс тестов; быстрее, но тесты не должны оставлять грязное состояние
- BaseTest:
@pytest.fixture(scope="class", autouse=True)— инициализирует driver и Page Objects; тестовые классы наследуются и получаютself.driver,self.login_page - Структура:
pages/+tests/+conftest.py; в каждой папке —__init__.py
Топ-3 ошибки: 1) Локаторы прямо в тестах, а не в классе страницы. 2) scope="class", тесты оставляют браузер в «грязном» состоянии — следующий тест падает. 3) Забыли __init__.py в pages/ — ModuleNotFoundError.
📖 О чём этот урок
Это урок-повторение блока «Page Object Model». Закрепляем всё, что изучали в уроке 11: зачем нужен POM, как строится структура проекта, что такое BasePage и BaseTest, как работают фикстуры с scope="class".
В этом уроке также разобраны вопросы экспресс-опроса из лекции и полное ДЗ на POM: checkout через три страницы с проверкой итоговой суммы $58.29.
Урок завершает блок Selenium (уроки 03–12). После него — переход к API-тестированию на библиотеке Requests.
Что повторим
- Проблема тестов без POM: дублирование локаторов, сложность поддержки
- Принципы POM: инкапсуляция, централизованное управление, переиспользование
- Классы страниц:
LoginPage,InventoryPage,CartPage,CheckoutPage - Базовый класс
BasePageс общими методами (find, click, type_text) - pytest-фикстуры в классах:
scope="class",autouse=True - Базовый тестовый класс
BaseTestи наследование от него - Структура проекта:
pages/,tests/,conftest.py,__init__.py - Разбор ДЗ: checkout через POM с проверкой итоговой суммы
📚 Что повторить перед изучением
- ← Урок 11: Page Object Model — паттерн POM
- Классы Python:
__init__, наследование,self - pytest-фикстуры:
@pytest.fixture,yield,scope - WebDriverWait + EC: явные ожидания
- Локаторы:
By.ID,By.CLASS_NAME,By.XPATH - Структура Python-пакетов:
__init__.py,from pages.login_page import LoginPage
🎯 Что изучать дальше
- → Урок 13: Введение в Requests — API-тестирование
- Параметризация тестов:
@pytest.mark.parametrize - conftest.py на уровне проекта — глобальные фикстуры
- Скриншоты при падении тестов:
driver.save_screenshot() - Allure-отчёты для POM-проектов