Где хранить логин и пароль при написании автотестов?

Ответ

При написании автотестов хранение учетных данных — критичный аспект безопасности. Я никогда не храню их в виде plain text в коде тестов. Вот мой подход:

Основной метод: Переменные окружения (Environment Variables) Это самый безопасный и переносимый способ. Данные загружаются в среду выполнения и недоступны в репозитории.

  • Пример на Python (pytest):

    import os
    
    TEST_USER = os.environ.get('QA_TEST_USER')
    TEST_PASSWORD = os.environ.get('QA_TEST_PASSWORD')
    
    def test_login():
        # Используем TEST_USER и TEST_PASSWORD
        ...
  • Как задать переменные:
    • Локально: в файле .env (который добавлен в .gitignore).
    • В CI/CD (Jenkins, GitLab CI, GitHub Actions): через защищенные настройки пайплайна (Secrets).

Резервный/Дополнительный метод: Конфигурационные файлы Для сложных наборов тестовых данных (несколько пользователей, ролей) использую конфигурационные файлы (JSON, YAML), которые тоже не коммитятся в репозиторий.

  • Пример config.qa.json (в .gitignore):
    {
      "users": {
        "admin": {
          "login": "qa_admin@example.com",
          "password": "#env:QA_ADMIN_PASS"
        },
        "user": {
          "login": "qa_user@example.com",
          "password": "#env:QA_USER_PASS"
        }
      }
    }

    Здесь пароли могут ссылаться на переменные окружения.

Важные практики, которые я соблюдаю:

  1. Использование тестовых/фиктивных аккаунтов: Учетные данные должны быть от специальных тестовых пользователей, а не от реальных сотрудников или продакшн-аккаунтов.
  2. .gitignore — наш друг: Все файлы с чувствительными данными (*.env, *config*.local.*, *secret*) должны быть в .gitignore.
  3. Шаблоны вместо реальных данных: В репозиторий кладу шаблоны файлов (например, .env.example), где указаны названия переменных, но не их значения.

Ответ 18+ 🔞

А, ну это же классика, ёпта! Сейчас расскажу, как я с этими паролями в тестах вожусь, чтобы потом не охуеть от того, что какой-нибудь распиздяй всё в репу закоммитил.

Основной метод: Переменные окружения (Environment Variables) Это, блядь, святое. Самый надёжный способ, чтобы эти данные в код не светились, как манда с ушами на параде. Загружаешь их в систему, и всё, они там тихо живут, а в репозитории нихуя нет.

  • Пример на Python (pytest):

    import os
    
    TEST_USER = os.environ.get('QA_TEST_USER')
    TEST_PASSWORD = os.environ.get('QA_TEST_PASSWORD')
    
    def test_login():
        # Используем TEST_USER и TEST_PASSWORD
        ...
  • Как задать переменные:
    • Локально: кидаешь в файлик .env. И этот файл, ясное дело, в .gitignore отправляется нахуй, чтобы никто его случайно не залил.
    • В CI/CD (Jenkins, GitLab CI): там уже через защищённые настройки пайплайна пропихиваешь. Доверия к этим штукам ебать ноль, но хоть так.

Резервный/Дополнительный метод: Конфигурационные файлы Бывает, что пользователей — овердохуища: админы, юзеры, модераторы. Тут уже в JSON или YAML удобнее. Главное — тоже не коммитить эту хрень.

  • Пример config.qa.json (в .gitignore):
    {
      "users": {
        "admin": {
          "login": "qa_admin@example.com",
          "password": "#env:QA_ADMIN_PASS"
        },
        "user": {
          "login": "qa_user@example.com",
          "password": "#env:QA_USER_PASS"
        }
      }
    }

    Видишь, пароли могут на переменные окружения ссылаться. Красота, а не жизнь.

Важные практики, которые я соблюдаю, чтобы не было потом волнения ебать:

  1. Использование тестовых/фиктивных аккаунтов: Это же, ёб твою мать, основа основ! Берёшь специально созданных для тестов ботов, а не пароли от реальной бухгалтерии. Иначе будет вам хиросима.
  2. .gitignore — наш друг и спаситель: Все файлы, от которых пахнет секретом (типа *.env, *config*.local.*), отправляются туда без разговоров. Чистая паранойя — залог успеха.
  3. Шаблоны вместо реальных данных: В репу кидаешь только пустышки, типа .env.example. Там названия переменных есть, а значений — хуй с горы. Коллега скачает, посмотрит и сразу поймёт, что ему нужно самому заполнить. Удивление пиздец, но работает.