← Назад к вопросам

Что такое переменные окружения?

1.0 Junior🔥 181 комментариев
#Теория тестирования

Комментарии (1)

🐱
deepseek-v3.2PrepBro AI7 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Что такое переменные окружения (Environment Variables)

Переменные окружения — это динамические именованные значения, хранящиеся в операционной системе или среде выполнения, которые влияют на поведение запущенных процессов и приложений. Они представляют собой пары "ключ-значение", доступные всем программам, работающим в данной среде, и используются для конфигурации, передачи параметров и управления поведением ПО без изменения его кода.

Основные характеристики и назначение

  • Динамическая конфигурация: Позволяют изменять настройки приложения без перекомпиляции или модификации исходного кода. Например, можно переключить базу данных с тестовой на продакшн, просто изменив переменную.
  • Безопасность: Позволяют хранить чувствительные данные (пароли, API-ключи, токены) вне кода, уменьшая риск их утечки при публикации репозитория.
  • Переносимость: Обеспечивают единообразную работу приложения в разных окружениях (разработка, тестирование, продакшн) за счет подстановки соответствующих значений.
  • Управление поведением системы: Используются ОС для определения путей, настроек локали, временных зон и других системных параметров.

Примеры распространенных переменных

  • PATH — список директорий, где ОС ищет исполняемые файлы.
  • HOME/USERPROFILE — путь к домашней директории пользователя.
  • JAVA_HOME — путь к установке Java JDK.
  • DATABASE_URL — строка подключения к базе данных.
  • API_KEY — секретный ключ для доступа к внешнему API.

Работа с переменными окружения на практике

В командной строке (Linux/macOS)

# Установка переменной для текущей сессии
export DATABASE_HOST="localhost"

# Использование в команде
echo "Подключаемся к $DATABASE_HOST"

# Просмотр всех переменных
env
printenv

В Windows (CMD/PowerShell)

:: Установка переменной
set DATABASE_HOST=localhost

:: В PowerShell
$env:DATABASE_HOST = "localhost"

В Python

import os

# Чтение переменной
db_host = os.environ.get('DATABASE_HOST', 'localhost')
print(f"Хост БД: {db_host}")

# Установка переменной (для текущего процесса)
os.environ['API_KEY'] = 'secret123'

В тестировании (практический пример)

При автоматизации тестов переменные окружения часто используются для управления конфигурацией:

# config.py
import os
from dotenv import load_dotenv

load_dotenv()  # Загружает переменные из .env файла

class TestConfig:
    BASE_URL = os.getenv('BASE_URL', 'https://dev.example.com')
    BROWSER = os.getenv('BROWSER', 'chrome')
    HEADLESS = os.getenv('HEADLESS', 'true').lower() == 'true'
    DB_CONNECTION = os.getenv('DATABASE_URL')
    API_TOKEN = os.getenv('API_TOKEN')
    
# test_example.py
def test_login():
    # Используем конфигурацию из переменных окружения
    driver = create_driver(TestConfig.BROWSER, TestConfig.HEADLESS)
    driver.get(TestConfig.BASE_URL + '/login')
    # ... остальная логика теста

Лучшие практики в QA Automation

  • Использование .env файлов для локальной разработки с библиотекой python-dotenv или аналогами
  • Хранение секретов в защищенных хранилищах (HashiCorp Vault, AWS Secrets Manager) в CI/CD пайплайнах
  • Явное документирование требуемых переменных в README файле
  • Провайждение значений по умолчанию для необязательных параметров
  • Валидация наличия обязательных переменных при старте приложения

Интеграция с CI/CD системами

В современных пайплайнах переменные окружения настраиваются через интерфейс CI/CD системы (Jenkins, GitLab CI, GitHub Actions):

# .gitlab-ci.yml пример
variables:
  TEST_ENV: "staging"
  ALLURE_RESULTS: "allure-results"

stages:
  - test

automated_tests:
  stage: test
  script:
    - echo "Running tests in $TEST_ENV environment"
    - pytest --alluredir=$ALLURE_RESULTS
  only:
    - develop

Заключение

Переменные окружения являются критически важным инструментом в арсенале QA Automation инженера. Они обеспечивают гибкость, безопасность и сопровождаемость тестового фреймворка, позволяя легко адаптировать тесты к различным окружениям без изменения кода. Правильное использование переменных окружения значительно повышает профессиональный уровень автоматизации и соответствует принципам 12-Factor App, которые стали стандартом в современной разработке.