feat: customize HTML report Environment block and title

conftest.py (корневой, новый):
  - pytest_sessionstart — заменяет блок Environment:
    Проект / Портал / Окружение / Браузер / Тестировщик
  - pytest_html_report_title — заголовок 'Отчёт E2E тестирования'
  - Использует config.stash[metadata_key] (правильный API
    для pytest-metadata 3.x + pytest-html 4.x)
  - Fallback на config._metadata для старых версий

tests/conftest.py:
  - Убраны дублирующие хуки (перенесены в корневой conftest)

Переменные окружения для кастомизации:
  TEST_ENV     — название среды (по умолчанию 'Production')
  TESTER_NAME  — имя тестировщика (по умолчанию 'QA Team')
This commit is contained in:
VolandSZ
2026-09-02 10:42:51 +03:00
parent d156fa0664
commit f511102289
2 changed files with 57 additions and 0 deletions

55
conftest.py Normal file
View File

@ -0,0 +1,55 @@
"""
Корневой conftest.py — конфигурация на уровне всей сессии.
Здесь размещены хуки которые должны работать глобально.
"""
import os
# pyrefly: ignore [missing-import]
from dotenv import load_dotenv
load_dotenv()
BASE_URL = os.getenv("BASE_URL", "https://vet.goznak.ru")
# ---------------------------------------------------------------------------
# Настройка блока Environment и заголовка HTML-отчёта
# ---------------------------------------------------------------------------
def pytest_sessionstart(session):
"""
Заменяет технические данные в блоке Environment отчёта на значимые.
pytest-html 4.x читает данные через config.stash[metadata_key]
(API pytest-metadata 3.x). Наш хук изменяет именно этот stash.
Чтобы изменить содержимое — редактируй словарь ниже.
Чтобы убрать строку — удали соответствующий ключ.
Чтобы добавить строку — добавь новую пару ключ/значение.
Порядок записей соответствует порядку в отчёте.
"""
config = session.config
try:
# pytest-metadata 3.x — используется pytest-html 4.x
from pytest_metadata.plugin import metadata_key
metadata = config.stash[metadata_key]
except (ImportError, KeyError):
# Fallback на старый API (pytest-metadata < 3.0)
metadata = getattr(config, "_metadata", None)
if metadata is None:
return
# Сбрасываем технические данные от pytest-metadata
metadata.clear()
# Заполняем значимыми данными для отчёта руководителю
# ↓ Редактируй эти значения под свой проект ↓
metadata["Проект"] = "e2e_Pets — Учёт домашних животных"
metadata["Портал"] = BASE_URL
metadata["Окружение"] = os.getenv("TEST_ENV", "Production")
metadata["Браузер"] = "Chromium (Playwright)"
metadata["Тестировщик"] = os.getenv("TESTER_NAME", "QA Team")
def pytest_html_report_title(report):
"""Задаёт заголовок HTML-отчёта."""
report.title = "Отчёт E2E тестирования — Портал учёта животных"

View File

@ -12,6 +12,8 @@ load_dotenv()
# Базовый URL портала — берётся из .env или дефолт
BASE_URL = os.getenv("BASE_URL", "https://vet.goznak.ru")
# Учётные данные для разных ролей — берутся из .env
CREDENTIALS = {
"vetdept": {