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

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

Термін · 0:00

Faker seed

Seed робить послідовність generated values відтворюваною в межах зафіксованої версії Faker; сам seed не замінює domain validation.

Тестові дані для автотестів →

Практика · 0:00

Відокремити local state від instance state

Створи два PageObject instances із різними page values і доведи assertions, що зміна local variable не змінює self.page іншого instance.
Обидва instances мають незалежні page attributes.
У method немає global state.
Автор може пояснити, чому obj.method() передає obj як перший argument.

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

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

Сортування цін через `Decimal`

UI-like string values перетворюються на exact Decimal, сортуються за спаданням і перевіряються через max().

Друкується [Decimal('12.20'), Decimal('10.99'), Decimal('9.43')].

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

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

Обхід dictionary

`headers.items()` дає пари key/value, `headers.keys()` — лише keys, `headers.values()` — лише values. Вибір залежить від перевірки: для друку повного header потрібні обидві частини, а для валідації набору полів достатньо keys.

4 цикли →

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

Не хардкодити єдиний набір даних

Credentials, product, company чи іншу сутність не варто фіксувати безпосередньо в тілі всіх тестів: один екземпляр не дає варіативності й приховує проблеми з іншими значеннями. Faker або власний generator має враховувати domain constraints і boundary values, а кожен run — по можливості створювати інший валідний набір. Детермінований seed можна залишити для відтворення падіння.

Тестові дані для автотестів →

Java: архівні доповнення · 2:20–4:45

`id`, attributes і частковий збіг

`#search` знаходить елемент з `id="search"`. Довільний attribute записується у квадратних дужках: `[name='viewport']`. Коли значення має стабільну частину та змінний hash, оператор `*=` дає пошук за підрядком. Це корисно для generated attributes у frontend frameworks, але стабільна частина має бути досить специфічною, щоб не отримати кілька збігів.

CSS і XPath: пошук елементів →

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

Membership у словнику

Оператор `in` для `dict` перевіряє ключі, а не values. Тому `"email" in response` відповідає на питання, чи API повернув поле, незалежно від його поточного значення; для перевірки значення потрібне окреме звернення за ключем.

2 оператори →

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

Tuple і розпакування

`tuple` підходить для фіксованої групи пов’язаних значень, наприклад `(201, "Created")`. Значення можна розпакувати за позицією у дві змінні. Кількість змінних має відповідати кількості елементів, інакше Python повідомить про помилку розпакування.

1 типи даних →

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

Класи еквівалентності, boundary values та IDs

Таблиця розширюється через equivalence partitioning і boundary value analysis: валідний формат незареєстрованого email, відсутня локальна або domain-частина, пробіли, порожній пароль, занадто короткі чи довгі значення. Окремо LLM пропонує рядки, схожі на XSS і SQL injection payloads. Ці payloads є лише вхідними прикладами, а не доказом захищеності: security check повинен мати конкретний expected result і виконуватися в безпечному тестовому середовищі. Для кожної параметризованої ітерації задається `id`, щоб у pytest output і CI report було видно не номер набору, а зміст failed case. Запуск виявляє як помилки з Faker/API, так і server-side rate limit. Це корисний сигнал: параметризація збільшує кількість однотипних запитів, тому test data й темп запуску мають враховувати обмеження системи.

2. Pytest fixtures, playwright fixture, прараметризація тестів →

Python мануфактура · Сесії: AMA та PMP · 10:30–12:22

Типізовані дані як наскрізний контракт

Між functions передають типізовані `UserDto`, `ProductDetails`, `CompanyDetails` або інші domain types замість розрізнених primitive values. Це робить required fields видимими, спрощує повторні assertions і зменшує ризик переплутати дані. Конкретні приклади реалізації розгортаються далі в курсі.

Тестові дані для автотестів →

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

Унікальні test data і повторне використання slug

[Дивитися з 23:00](https://www.youtube.com/watch?v=viR9Rnmxse4&t=1380s). Автотест не може покладатися на випадкове ручне очищення: кожен run потребує незалежних names, emails та URLs, наприклад через Faker або контрольований unique suffix. Водночас validation tests мають використовувати стабільний набір навмисно невалідних values. Обговорення виявляє можливий defect: після soft delete database identity може лишатися, але public slug доцільно анонімізувати або звільняти, якщо зовнішні зв’язки тримаються за immutable ID.

Практика курсу на YOY, домашні завдання та формат ПМП →
Запитати в чаті про «values» →