Ответ
При написании автотестов хранение учетных данных — критичный аспект безопасности. Я никогда не храню их в виде 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), где указаны названия переменных, но не их значения.