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

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

Приклад коду · 17:25

Мінімальна typed projection API-відповіді

Проєктує лише потрібне поле id замість поширення raw dictionary у UI-тест.

Assertion завершується без помилки й повертає Project(id='p-1').

3. API preconditions →

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

Instance state через self та __init__

page є instance attribute: кожен PageObject отримує власний стан через __init__, а method читає його через self.

Команда друкує Page: checkout і assertion проходить.

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

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

Typed configuration і пароль, невалідний за явною policy

Приклад створює frozen configuration і генерує пароль довжиною 10, який гарантовано порушує задану в прикладі minimum-length policy 12.

Assertions проходять, друкується student@example.test.

3. Рефакторинг: Faker, DataClass, Fixtures →

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

Оголошення, parameters, type hints і `return`

Функція оголошується через `def`, приймає named parameters і може повертати значення. Type hints на кшталт `email: str` та `-> dict[str, str]` покращують navigation і IDE checks, але самі по собі не валідовують input at runtime.

6 функції →

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

Типи параметрів і повернення

Сигнатура на кшталт `def hello_to(name: str) -> str` описує вхід і результат. IDE після крапки може підказати методи `str`, а reviewer одразу бачить контракт функції. Важливе уточнення: type hints за замовчуванням не перевіряються інтерпретатором як жорстке обмеження й не є оптимізацією швидкодії. Їхню коректність перевіряють IDE, type checker і тести.

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

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

`str`, `int`, `float`, `bool` і запуск прикладів

Змінна отримує тип із присвоєного значення: текст у лапках стає `str`, ціле число — `int`, число з десятковою крапкою — `float`, а `True`/`False` — `bool`. `type(value)` допомагає побачити фактичний тип. Файл можна запускати кнопкою Run в IDE й одразу звіряти оголошені значення з console output.

1 типи даних →

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

Рядки й явна типізація

Змінна `hello_world: str` демонструє рядковий тип. Python здатен вивести тип із правої частини, але annotation робить намір видимим у code review та допомагає IDE з автодоповненням. Для швидкого експерименту значення виводиться через `print()`. IDE postfix templates і шорткати скорочують набір коду, але результат залишається звичайним Python-викликом.

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

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

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

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

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

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

Нормалізація та очищення рядків

`.lower()` і `.upper()` нормалізують регістр перед порівнянням, наприклад коли тестові дані й UI відрізняються лише великими літерами. Результат методу — новий рядок; початковий `str` не змінюється, якщо результат не присвоїти. `.removeprefix("https://")` і `.removesuffix(...)` прибирають точний префікс або суфікс. Якщо збігу немає, рядок повертається без змін. Це безпечніше за довільне `replace()`, коли потрібно обробити лише край рядка.

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

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

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

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

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