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

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

Термін · 6:00

frozen dataclass

Параметр frozen=True додає захист від звичайного присвоєння полів і піднімає FrozenInstanceError; документація описує це як emulated immutability, а не абсолютну незмінність Python object.

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

Нюанс · 6:00

`frozen=True` — контрольований contract, не security boundary

Python documentation прямо називає frozen behavior імітацією: generated methods блокують звичайне assignment, але це не механізм захисту secret або hostile code.

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

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

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

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

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

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

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

Відтворюваний typed test object

Stdlib-приклад показує typed object, valid range і fixed seed без додаткової dependency.

Друкується відтворюваний UserData, а assertion підтверджує базові constraints.

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

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

Мінімальна smoke job

Показує найкоротший workflow path від checkout до smoke tests без винесення setup у composite action.

Pull request або manual dispatch створює smoke job на ubuntu-latest і запускає pytest marker smoke.

2. Практика та написання пайплану CI/CD →

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

Immutable конфігурація через dataclass

Dictionary конфігурації незручний: IDE не підказує дозволені ключі, а помилки в рядках знаходяться лише під час виконання. Замість нього створюється `@dataclass(frozen=True)` з полями URL, email і password. `frozen=True` забороняє звичайне переприсвоєння полів після створення об’єкта. Це добре відповідає конфігурації одного тестового запуску: значення зчитали на старті й далі лише використовують.

3. Рефакторинг: Faker, DataClass, Fixtures →
Запитати в чаті про «frozen» →