Добавлена инфраструктура для тестовых данных: tests/testdata/generators.py — генераторы случайных данных по ФЛК: - Раздел 'Животное': gen_animal_name, gen_birth_date - Раздел 'Маркировка': gen_microchip (ISO 11784/85), gen_tattoo - Раздел 'Владелец': gen_owner_full_name, gen_owner_phone, gen_owner_email Каждая функция содержит описание ФЛК правил и пример вывода. Файл содержит подробное руководство по добавлению новых генераторов. tests/01_vetdept/fixtures/ — папка для статических артефактов роли: fixtures/images/ ← фото животных fixtures/docs/ ← PDF, сертификаты tests/01_vetdept/conftest.py — добавлена фикстура fixtures_dir (Path), возвращает путь к папке артефактов для использования в тестах. requirements.txt — добавлен faker (генерация русскоязычных данных)
64 lines
2.9 KiB
Python
64 lines
2.9 KiB
Python
# pyrefly: ignore [missing-import]
|
||
import pytest
|
||
from pathlib import Path
|
||
|
||
|
||
# ---------------------------------------------------------------------------
|
||
# Пути к статическим артефактам роли (фото, документы, файлы)
|
||
# ---------------------------------------------------------------------------
|
||
|
||
@pytest.fixture(scope="session")
|
||
def fixtures_dir() -> Path:
|
||
"""
|
||
Путь к папке со статическими артефактами роли vetdept.
|
||
Структура папки:
|
||
fixtures/
|
||
├── images/ ← фотографии животных, документы-сканы
|
||
└── docs/ ← PDF, сертификаты и прочие документы
|
||
|
||
Используй как базовый путь для других фикстур-артефактов:
|
||
def test_s02_upload(self, browser_page, fixtures_dir):
|
||
photo = fixtures_dir / "images" / "cat_photo.jpg"
|
||
browser_page.set_input_files("input[type=file]", str(photo))
|
||
"""
|
||
return Path(__file__).parent / "fixtures"
|
||
|
||
|
||
# ---------------------------------------------------------------------------
|
||
# Готовые фикстуры для конкретных артефактов
|
||
# Добавляй новые по мере появления новых файлов в папке fixtures/
|
||
# ---------------------------------------------------------------------------
|
||
|
||
# Пример: раскомментируй и адаптируй когда нужен конкретный файл
|
||
#
|
||
# @pytest.fixture(scope="session")
|
||
# def cat_photo(fixtures_dir) -> Path:
|
||
# """Фотография кошки для теста загрузки фото животного."""
|
||
# return fixtures_dir / "images" / "cat_photo.jpg"
|
||
|
||
|
||
# ---------------------------------------------------------------------------
|
||
# Контейнер для передачи данных между разными БП одной роли (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 {}
|