Ответ
При написании автотестов хранение учетных данных — критичный аспект безопасности. Я никогда не храню их в виде 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" } } }Здесь пароли могут ссылаться на переменные окружения.
Важные практики, которые я соблюдаю:
- Использование тестовых/фиктивных аккаунтов: Учетные данные должны быть от специальных тестовых пользователей, а не от реальных сотрудников или продакшн-аккаунтов.
.gitignore— наш друг: Все файлы с чувствительными данными (*.env,*config*.local.*,*secret*) должны быть в.gitignore.- Шаблоны вместо реальных данных: В репозиторий кладу шаблоны файлов (например,
.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" } } }Видишь, пароли могут на переменные окружения ссылаться. Красота, а не жизнь.
Важные практики, которые я соблюдаю, чтобы не было потом волнения ебать:
- Использование тестовых/фиктивных аккаунтов: Это же, ёб твою мать, основа основ! Берёшь специально созданных для тестов ботов, а не пароли от реальной бухгалтерии. Иначе будет вам хиросима.
.gitignore— наш друг и спаситель: Все файлы, от которых пахнет секретом (типа*.env,*config*.local.*), отправляются туда без разговоров. Чистая паранойя — залог успеха.- Шаблоны вместо реальных данных: В репу кидаешь только пустышки, типа
.env.example. Там названия переменных есть, а значений — хуй с горы. Коллега скачает, посмотрит и сразу поймёт, что ему нужно самому заполнить. Удивление пиздец, но работает.