Sobes.tech
Назад к вопросам
Junior — Middle
74

Объясните, что такое переменные окружения и как они используются в приложениях

Компании, где спрашивали
ПромсвязьбанкПромсвязьбанк

Ответ от нейросети

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.com
  • API_TOKEN=secret123
  • TIMEOUT=20

то тесты будут работать именно с этими значениями.

Пояснение кода:

В этом примере код не требует сложного пояснения, но логика такая:

  1. os.getenv("BASE_URL") читает значение переменной BASE_URL.
  2. os.getenv("API_TOKEN") получает токен, который не хранится в коде.
  3. os.getenv("TIMEOUT", "30") возвращает 30, если переменная не задана.
  4. int(...) преобразует строку в число, чтобы использовать таймаут в вычислениях или ожиданиях.

Если переменная не задана и значение по умолчанию не указано, обычно вернется None, и это нужно учитывать в проверках.

Ключевые моменты:

  • Переменные окружения отделяют конфигурацию от кода.
  • Они особенно полезны для разных сред запуска: local, test, staging, prod.
  • Через них удобно и безопаснее передавать секреты и чувствительные параметры.
  • В автотестах они помогают запускать один и тот же код в разных окружениях без правок.
  • Всегда стоит предусматривать значения по умолчанию и проверки на отсутствие переменных.
  • Не стоит хранить реальные секреты прямо в репозитории или исходниках.