Files
contracts-flask/tests/conftest.py
T

38 lines
1.2 KiB
Python

"""Общие фикстуры для тестов contracts-flask (модули site/).
Запуск: pytest tests/ -q
"""
import os
import sys
import pytest
# site/ в sys.path — импортируем config/db/services/routes напрямую
_SITE = os.path.join(os.path.dirname(__file__), "..", "site")
if _SITE not in sys.path:
sys.path.insert(0, _SITE)
@pytest.fixture(autouse=True, scope="session")
def _isolate_global_db(tmp_path_factory):
"""Не дать импорту app.py пересоздать реальную /tmp/contracts.db."""
from db import connection as conn
conn.DB_PATH = str(tmp_path_factory.mktemp("dbs") / "session.db")
@pytest.fixture
def db(tmp_path, monkeypatch):
"""Изолированная БД: отдельный DB_PATH + свежая схема (init_db)."""
from db import connection as conn
monkeypatch.setattr(conn, "DB_PATH", str(tmp_path / "contracts_test.db"))
conn.init_db()
yield conn
# cleanup: закрыть thread-local соединение
c = getattr(conn._local, "conn", None)
if c is not None:
try:
c.close()
except Exception:
pass
conn._local.conn = None