From 02176b5ccdf24ab6f51d7d36f6d0e1ca0bd877b8 Mon Sep 17 00:00:00 2001 From: VolandSZ <{E-MAIL}> Date: Tue, 1 Sep 2026 21:11:52 +0300 Subject: [PATCH] feat: show step docstrings in pytest-html report Test column MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Добавлен хук pytest_runtest_makereport в tests/conftest.py. Заменяет технический nodeid (путь к файлу::класс::метод[chromium]) на первую строку docstring тестового метода. Результат в отчёте: До: tests/01_vetdept/BP01_navigation/test_bp01_navigation.py::TestBP01Navigation::test_s01_open_dashboard[chromium] После: Шаг 1: Открыть главную страницу (Dashboard) Правило: что написано в docstring метода — то отображается в отчёте. --- tests/conftest.py | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/tests/conftest.py b/tests/conftest.py index ba85b41..1c5cf6e 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -108,4 +108,26 @@ def role_page(page: Page, request): role = _get_role(request) _login(page, role) yield page - page.context.clear_cookies() \ No newline at end of file + page.context.clear_cookies() + + +# --------------------------------------------------------------------------- +# Хук для отображения читаемых имён шагов в pytest-html отчёте +# --------------------------------------------------------------------------- + +@pytest.hookimpl(hookwrapper=True) +def pytest_runtest_makereport(item, call): + """ + Заменяет технический путь к тесту в колонке Test отчёта pytest-html + на docstring метода (например, 'Шаг 1: Открыть главную страницу'). + + Если docstring отсутствует — оставляет оригинальный nodeid. + """ + outcome = yield + report = outcome.get_result() + + # Берём docstring тестовой функции + doc = getattr(item.function, "__doc__", None) + if doc: + description = doc.strip().splitlines()[0] # только первая строка + report.nodeid = description \ No newline at end of file