64 lines
2.9 KiB
Python
64 lines
2.9 KiB
Python
"""Общие настройки pytest для synthgen.
|
||
|
||
Маркеры:
|
||
- `parser` — приёмка парсером tabular-parser из зеркального worktree (переменная `TP_WT`);
|
||
без окружения такие тесты пропускаются.
|
||
- `slow` — долгие прогоны; по умолчанию пропускаются, запуск: `-m slow`.
|
||
"""
|
||
|
||
import os
|
||
from pathlib import Path
|
||
|
||
import pytest
|
||
|
||
|
||
def pytest_configure(config):
|
||
config.addinivalue_line("markers", "parser: приёмка парсером из зеркального worktree (TP_WT), без окружения — skip")
|
||
config.addinivalue_line("markers", "slow: долгий прогон, по умолчанию пропускается, запуск -m slow")
|
||
|
||
|
||
def pytest_collection_modifyitems(config, items):
|
||
markexpr = config.getoption("-m") or ""
|
||
tp_wt = os.environ.get("TP_WT")
|
||
parser_ready = bool(tp_wt) and Path(tp_wt).is_dir()
|
||
for item in items:
|
||
if "slow" in item.keywords and "slow" not in markexpr:
|
||
item.add_marker(pytest.mark.skip(reason="долгий прогон: запуск с -m slow"))
|
||
if "parser" in item.keywords and not parser_ready:
|
||
item.add_marker(pytest.mark.skip(reason="нужен TP_WT (зеркало tabular-parser)"))
|
||
|
||
|
||
@pytest.fixture(scope="session")
|
||
def osv_world():
|
||
"""Небольшая группа с книгами за 3 периода (для тестов ОСВ): (cfg, group, periods, books)."""
|
||
from synthgen import dictionary
|
||
from synthgen.config import Config
|
||
from synthgen.counterparties import plan as make_plan
|
||
from synthgen.group import build_group
|
||
from synthgen.intragroup import build
|
||
from synthgen.periods import build_periods
|
||
|
||
cfg = Config(group_size=4, periods=3, osv_counterparties_mean=8, no_inn_companies=1)
|
||
group = build_group(cfg, dictionary.load())
|
||
periods = build_periods(cfg.start, cfg.periods)
|
||
books, _ = build(cfg, group, periods, make_plan(cfg, group))
|
||
return cfg, group, periods, books
|
||
|
||
|
||
@pytest.fixture(scope="session")
|
||
def forms_world():
|
||
"""Группа с книгами за 5 периодов подряд (2025-Q1 … 2026-Q1) для тестов ББ/ОФР: сравнительные колонки
|
||
последнего периода целиком лежат в книге: (cfg, group, periods, books)."""
|
||
from synthgen import dictionary
|
||
from synthgen.config import Config
|
||
from synthgen.counterparties import plan as make_plan
|
||
from synthgen.group import build_group
|
||
from synthgen.intragroup import build
|
||
from synthgen.periods import build_periods
|
||
|
||
cfg = Config(group_size=3, periods=5, osv_counterparties_mean=6, no_inn_companies=1)
|
||
group = build_group(cfg, dictionary.load())
|
||
periods = build_periods(cfg.start, cfg.periods)
|
||
books, _ = build(cfg, group, periods, make_plan(cfg, group))
|
||
return cfg, group, periods, books
|