"""测试基座:httpx ASGITransport 进程内测试,不起真实服务。 默认跑 mongodb 后端(需要本地 27017 有 mongo)。 跑 mysql 后端:DB_BACKEND=mysql MYSQL_DSN=... uv run pytest """ import os import pytest_asyncio from httpx import ASGITransport, AsyncClient # 测试用独立库,避免污染开发数据 os.environ.setdefault("MONGO_DB", "app_test") if os.environ.get("DB_BACKEND") == "mysql": os.environ["MYSQL_DSN"] = os.environ.get( "MYSQL_DSN", "mysql+aiomysql://root:root@127.0.0.1:3306/app_test?charset=utf8mb4" ) from src.main import create_app @pytest_asyncio.fixture async def client(): app = create_app() async with AsyncClient( transport=ASGITransport(app=app), base_url="http://test" ) as ac: # 手动触发 lifespan(ASGITransport 不自动跑 lifespan) async with app.router.lifespan_context(app): yield ac