Files
e2e_Pets/tests/01_vetdept/conftest.py
VolandSZ e718bf48d4 refactor: hierarchical test architecture (Project > Role > BP > Steps)
Реструктурированы тесты под иерархию Проект > Личный кабинет > БП > Шаги.

Архитектура:
- Бизнес-процесс = Python-класс, шаг = метод класса
- Шаги именуются test_s01_*, test_s02_* и т.д.
- БП именуются BP01_, BP02_ и т.д., каждый в своей папке

Передача данных:
- browser_page (scope=class) — один браузер на весь БП, авторизация 1 раз
- bp_state (scope=class) — словарь для передачи данных между шагами одного БП
- shared_state (scope=session) — словарь для передачи между разными БП

Зависимости шагов (pytest-dependency):
- Если шаг N упал, шаги N+1... получают статус SKIPPED автоматически
- Имена зависимостей: BP01::s01, BP01::s02 и т.д.

Изменения файлов:
- tests/conftest.py: добавлены browser_page и bp_state, вынесены
  вспомогательные функции _get_role и _login, сохранена role_page
  (deprecated) для обратной совместимости
- tests/01_vetdept/conftest.py: новый, содержит shared_state
- tests/01_vetdept/BP01_navigation/: новая папка с тестом навигации
- tests/01_vetdept/001_login_test.py: удалён (переписан в BP01)
- requirements.txt: добавлен pytest-dependency
- pytest.ini: добавлен маркер dependency
2026-08-31 17:37:21 +03:00

28 lines
1.1 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import pytest
# ---------------------------------------------------------------------------
# Контейнер для передачи данных между разными БП одной роли (scope=session)
# ---------------------------------------------------------------------------
@pytest.fixture(scope="session")
def shared_state() -> dict:
"""
Словарь для передачи данных между разными бизнес-процессами
в рамках одной тестовой сессии.
Используй когда результат одного БП нужен в другом.
Например: BP01 создал заявку → BP02 работает с ней.
Пример:
# В BP01:
def test_s03_create(self, browser_page, bp_state, shared_state):
bp_state["claim_id"] = "12345"
shared_state["claim_id"] = "12345" # передаём в BP02
# В BP02:
def test_s01_open(self, browser_page, shared_state):
claim_id = shared_state["claim_id"]
"""
return {}