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

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

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

Fail-fast завантаження локальної конфігурації

Приклад завантажує сусідній .env, перевіряє всі обов’язкові keys і завершується з явною помилкою, якщо конфігурація неповна.

Для підготовленого .env друкується https://example.test; при відсутньому key виникає RuntimeError.

2.1. відео, енв файл →

Приклад коду · 2:55

Окремий context для Free-користувача

Fixture створює isolated BrowserContext із наперед підготовленим Free-state; Enterprise-state має бути окремою fixture або parameterized input із чіткою очікуваною роллю.

Тест стартує у визначеному Free-контексті без умовного розгалуження за випадковим UI-станом.

На сторінці може бути різний контент — що робити? →

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

Явне очікування видимого елемента

Locator передається всередину expected condition, тому кожна спроба polling може повторно знайти актуальний DOM-вузол.

Повертається видимий WebElement або після 10 секунд виникає TimeoutException.

1. Selenium початок, основи, фікстури →

Термін · 18:10

Chrome DevTools Recorder

Вбудована Chrome DevTools panel для запису, replay, редагування, import і export user flows у поточній browser session.

4. Playwright плагіни та codegen →

Що змінилося після запису · 4:18

`__init__.py` не є умовою pytest discovery

Pytest знаходить test modules і functions за naming conventions навіть без Python package. __init__.py впливає на import semantics і module names, але не є обов’язковим для базового discovery.

2. Перший автотест на Python з Playwright →

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

Перші падіння і діагностика fixtures

Згенерована `models.py` містить багато загальних класів на кшталт `Attributes1`, `Attributes2`, тому його краще використовувати як reference і поступово називати моделі за їхньою предметною роллю. Під час демо тест падає через неправильні imports і видалену fixture. Для circular import корисно читати останній змістовний фрейм traceback: там зазвичай вказано реальний модуль і напрям залежності. Якщо `pytest` не знаходить fixture, він друкує перелік усіх доступних fixtures, що допомагає помітити назву або проблему з discovery.

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

Python мануфактура · Програма курсу · 7:54–10:03

Синхронний Playwright API і фікстура `page`

У курсі використовується синхронний API Playwright, щоб кроки тесту виконувалися послідовно без додаткової складності `async`/`await`. Фікстуру можна типізувати класом `Page`, а PyCharm імпортує потрібне ім’я через quick fix: ```python from playwright.sync_api import Page, expect def test_open_home_page(page: Page): ... ``` Важливо імпортувати `Page` і `expect` саме з `playwright.sync_api`, а не з асинхронного API.

2. Перший автотест на Python з Playwright →

Python мануфактура · Сесії: AMA та PMP · 8:16–11:51

Для чого потрібен `__init__.py`

Наявність `__init__.py` робить директорію звичайним Python package і може визначати його зручний публічний API через imports або `__all__`. Це допомагає IDE, імпортам і читачеві зрозуміти межу модуля. Сучасний Python також підтримує namespace packages без `__init__.py`, тому файл не є абсолютною вимогою для кожної імпортованої директорії. У навчальному проєкті явний package зазвичай простіший і передбачуваніший.

__init__, self, page та принципи ООП →
Запитати в чаті про «import» →