Python мануфактураJavaDesign Patterns для автоматизаторів

Терміни, нюанси та джерела

Приклад коду · 0:00

Мінімальний Playwright Page Object із readiness check

Class name позначає page, methods описують actions, locators зберігаються в одному місці, а open завершується мінімальною readiness check.

Після open() test продовжується лише коли heading Sign in видимий; fill_email() приховує locator details від test code.

Неймінг та структура automation-проєкту →

Термін · 3:00

__init__

Initializer, який викликається після створення instance методом __new__ і налаштовує його початковий стан; він не повинен повертати значення, відмінне від None.

__init__, self, page та принципи ООП →

Термін · 16:00

In-place list operation

Methods mutable collections, які лише змінюють object, повертають None; тому list.insert() і list.sort() не треба присвоювати назад змінній.

4. Типізація даних (str, int, float, bool) →

Приклад коду · 5:30

Мінімальний Allure step і attachment

Показує окремий business-readable step і binary screenshot attachment без додаткової wrapper abstraction.

Після запуску pytest з --alluredir report містить step Open login page і PNG attachment, якщо attach_screenshot викликано.

4. Allure репорт, основи та інтеграція в CI →

Приклад коду · 0:00

Мінімальний wait-aware BasePage

Page Objects передають locator tuple у BasePage, а кожна дія очікує власну перевірювану передумову.

click() працює лише з видимим і enabled елементом; type_text() — з видимим елементом.

2. Selenium організація PageObject's та Очікувань →

Python мануфактура · Програма курсу · 1:30–3:30

`==`, `!=`, `assert` та `is None`

`==` і `!=` порівнюють значення. `assert actual == expected` у разі розбіжності показує вираз і значення, що прискорює діагностику тесту. `is` перевіряє identity об’єкта, тому для рядків і чисел потрібне `==`; типовий коректний automation-випадок для identity — `value is None`.

2 оператори →

Python мануфактура · Програма курсу · 5:31–7:30

`None`, truthiness і membership

Optional message перевіряється через `is None`. Порожні list/dict/set є false-like, тому `if not errors` читається як «помилок немає». Для allowlist browser-ів вираз `browser in supported_browsers` коротший і точніший за ланцюг `or`, але значення все одно чутливі до регістру та точної назви.

3 умови →

Python мануфактура · Програма курсу · 31:05–33:10

Явна перевірка помилки типу

Щоб показати цінність schema validation, тип одного поля навмисно змінюється на `str`. `Pydantic` одразу повідомляє шлях до поля, очікуваний тип і фактичне `None`. Якщо `None` справді дозволено контрактом, тип має це відображати, наприклад `str | None`. `Any` варто залишати лише для поля, структура якого справді нестабільна або не важлива для поточної перевірки.

2. API автоматизація одразу правильно, MVC, pydantic →

Python мануфактура · Програма курсу · 16:00–19:00

`split()` і змінюваний `list`

`.split(separator)` перетворює один рядок на `list[str]`, наприклад список email або частини тексту. Після цього до елементів можна звертатися за індексом, видаляти, вставляти або сортувати їх. Під час експерименту видно важливу особливість: методи на кшталт `list.insert()` змінюють список на місці й повертають `None`. Тому результат не треба присвоювати назад у список; спочатку викликається `emails.insert(...)`, потім читається `emails`.

4. Типізація даних (str, int, float, bool) →

Python мануфактура · Програма курсу · 30:00–33:00

Сортування на місці та локальна область видимості

`prices.sort(reverse=True)` змінює наявний список і повертає `None`. Після сортування повторна перевірка показує, що перша ціна стала максимальною. Якщо початковий порядок ще потрібен, слід використати `sorted(prices, reverse=True)`, який повертає новий список. Змінна, створена всередині функції, є локальною й недоступна ззовні. Водночас функція може читати значення з ширшої області, хоча явні параметри зазвичай роблять залежності тестового helper зрозумілішими.

4. Типізація даних (str, int, float, bool) →
Запитати в чаті про «None» →