Объясните, что такое переменные окружения и как они используются в приложениях
Ответ от нейросети
sobes.tech AI
Что хотят услышать интервьюеры:
Переменные окружения — это способ передавать приложению настройки извне, без жесткого встраивания их в код. Обычно через них задают параметры для разных сред: dev, test, staging, prod. Это позволяет не менять код при смене окружения и безопаснее хранить чувствительные данные.
Определение:
Переменные окружения — это пары имя=значение, которые доступны процессу при запуске и во время работы. Приложение читает их из операционной системы или окружения запуска и использует как конфигурацию: адреса сервисов, логины, токены, режим работы, флаги включения функций.
В QA и автоматизации их часто используют для:
- выбора среды тестирования;
- хранения секретов и токенов;
- настройки путей, браузеров, URL и таймаутов;
- запуска одних и тех же тестов в разных окружениях.
Пример использования:
Например, автотесты могут брать URL стенда и токен из переменных окружения, чтобы один и тот же набор тестов запускался в разных средах без изменения кода.
import os
base_url = os.getenv("BASE_URL")
token = os.getenv("API_TOKEN")
timeout = int(os.getenv("TIMEOUT", "30"))
print(base_url)
print(token)
print(timeout)
Если задать:
BASE_URL=https://staging.example.comAPI_TOKEN=secret123TIMEOUT=20
то тесты будут работать именно с этими значениями.
Пояснение кода:
В этом примере код не требует сложного пояснения, но логика такая:
os.getenv("BASE_URL")читает значение переменнойBASE_URL.os.getenv("API_TOKEN")получает токен, который не хранится в коде.os.getenv("TIMEOUT", "30")возвращает30, если переменная не задана.int(...)преобразует строку в число, чтобы использовать таймаут в вычислениях или ожиданиях.
Если переменная не задана и значение по умолчанию не указано, обычно вернется None, и это нужно учитывать в проверках.
Ключевые моменты:
- Переменные окружения отделяют конфигурацию от кода.
- Они особенно полезны для разных сред запуска: local, test, staging, prod.
- Через них удобно и безопаснее передавать секреты и чувствительные параметры.
- В автотестах они помогают запускать один и тот же код в разных окружениях без правок.
- Всегда стоит предусматривать значения по умолчанию и проверки на отсутствие переменных.
- Не стоит хранить реальные секреты прямо в репозитории или исходниках.