#!/usr/bin/env python3 import pytest import pytest_asyncio from typing import Generator from fastapi.testclient import TestClient from app.main import app from app.database import Base from app.database import async_engine from app.database import async_session from app.database import engine from app.database import SessionLocal from sqlalchemy import orm @pytest_asyncio.fixture async def async_db_session(): async with async_session() as session: # type: ignore async with async_engine.begin() as conn: await conn.run_sync(Base.metadata.create_all) yield session async with async_engine.begin() as conn: await conn.run_sync(Base.metadata.drop_all) @pytest.fixture def db(): _Session = orm.scoped_session(SessionLocal) Base.metadata.create_all(bind=engine) with _Session() as db_session: try: yield db_session finally: db_session.close() Base.metadata.drop_all(bind=engine) @pytest.fixture def client(db) -> Generator: with TestClient(app) as c: yield c