import pytest from typing import AsyncGenerator from httpx import AsyncClient, ASGITransport from sqlalchemy.orm import sessionmaker from src.main import app # inited FastAPI app from src.database import engine, Base, get_db SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine) @pytest.fixture() def db_session(): Base.metadata.drop_all(bind=engine) Base.metadata.create_all(bind=engine) db = SessionLocal() try: _seed(db) yield db finally: db.rollback() db.close() @pytest.fixture async def default_client(db_session) -> AsyncGenerator[AsyncClient, None]: def get_db_override(): return db_session app.dependency_overrides[get_db] = get_db_override transport = ASGITransport(app=app) async with AsyncClient( transport=transport, base_url="http://localhost:8000/api/v1" ) as ac: yield ac app.dependency_overrides.clear() def _seed(db): pass