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

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

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

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

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

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

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

Термін · 6:00

load_dotenv

load_dotenv() читає key-value pairs з .env і додає їх до environment; за замовчуванням уже наявні environment variables не перезаписуються.

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

Нюанс · 6:00

Environment variables мають вищий пріоритет

Оскільки load_dotenv() не override-ить наявні environment variables за замовчуванням, CI або shell може без зміни .env надати іншу конфігурацію.

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

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

`python-dotenv` і `load_dotenv()`

Сам файл `.env` не потрапляє в `os.environ` автоматично. Додається пакет `python-dotenv`, викликається `load_dotenv()`, після чого `os.getenv()` бачить локальні значення. Версію залежності фіксують у `requirements.txt`. Після зміни запускаються всі наявні тести. Їх успішне проходження підтверджує, що перенесення конфігурації не змінило поточну поведінку сценаріїв.

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

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

`.env` як локальна конфігурація

Автотести розглядаються як застосунок, якому потрібна конфігурація: базові URL, email, пароль та інші параметри запуску. У корені проєкту створюється `.env`, а імена незмінних конфігурацій записуються в `UPPER_SNAKE_CASE`, наприклад `BASE_URL`, `EMAIL`, `PASSWORD`. `.env` і `.venv` додаються до `.gitignore`. Сірий файл в IDE означає, що Git його не відстежує. Важливе уточнення: `.gitignore` діє лише на невідстежувані файли. Якщо `.env` уже був закомічений, його треба прибрати з індексу; якщо секрет уже опублікований — також відкликати або змінити сам секрет.

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

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

Environment variables і межа простого `.env`

Environment variable передає процесу значення на кшталт base URL, username або password без hardcode у вихідному коді. У Unix-подібній оболонці змінну можна експортувати перед запуском; у Windows вона задається іншим системним механізмом. `.env` є зручним локальним представленням таких пар ключ–значення, яке застосунок читає під час старту. Проблема з'являється, коли один продукт має кілька web/API/admin-сервісів і кожному потрібні окремі URL та credentials. Плоский набір ключів розростається, префікси дублюються, а залежності між значеннями стають неочевидними. Для невеликого проєкту `.env` достатній; переходити на складніший формат варто після реального зростання конфігурації.

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

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

Централізація в `conftest.py`

Щоб не повторювати `load_dotenv()` і читання змінних у кожному тестовому файлі, конфігурація переноситься в `conftest.py`. Pytest автоматично знаходить цей файл у відповідній директорії та робить fixtures доступними тестам нижче по дереву. Створюється fixture конфігурації зі scope `session`. Вона обчислюється один раз на весь тестовий запуск і повертає набір значень, потрібних сценаріям.

2.1. відео, енв файл →
Запитати в чаті про «dotenv» →