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

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

Термін · 16:00

In-place list operation

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

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

Практика · 11:30

Спроєктувати config і test-user lifecycle

Складіть однаковий список config keys для local, dev і CI без environment prefixes у коді.
Опишіть, хто створює test user, як він резервується для parallel worker і як відновлюється після failure.
Позначте зовнішні auth dependencies та окремо визначте production acceptance check і test-only seam.
Config matrix і state diagram без shared mutable user між parallel workers.

Юзер менеджмент та костилі з якими ви стикнетесь в житті →

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

Default arguments

`build_user(email, role="viewer")` дозволяє не передавати типову роль, але явно перевизначити її через `role="admin"`. Default має бути безпечним і передбачуваним. Mutable defaults на кшталт `[]` або `{}` небезпечні, бо один об’єкт повторно використовується між викликами.

6 функції →

Python мануфактура · Сесії: AMA та PMP · 6:00–9:30

OOP, патерни й ізоляція browser state

На базовому рівні потрібно розуміти primitives/value types, reference/object types, класи, об'єкти та принципи OOP. Із прикладних патернів найчастіше зустрічається Page Object; корисно впізнавати Singleton, Builder, Facade та інші рішення, але не впроваджувати їх без проблеми, яку вони реально спрощують. Page Factory виник навколо старих Selenium-підходів із lazy initialization елементів. Для сучасного Selenium або Playwright його не варто застосовувати за інерцією. У багатопоточному WebDriver framework кожен тест/worker повинен мати власний browser context або driver; спільний mutable driver спричиняє взаємний вплив тестів.

Що має вміти та знати мідл автоматизатор →

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

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

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

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