"""pytest 配置文件和 fixtures""" import pytest import pytest_asyncio from typing import AsyncGenerator from httpx import AsyncClient, ASGITransport from app.api import create_app from app.core.db import init_db, get_db from app.repositories.proxy_repo import ProxyRepository @pytest_asyncio.fixture(scope="function") async def app(): """创建应用实例""" # 初始化测试数据库 await init_db() app = create_app() async with app.router.lifespan_context(app): yield app @pytest_asyncio.fixture async def client(app) -> AsyncGenerator[AsyncClient, None]: """创建异步 HTTP 客户端""" transport = ASGITransport(app=app) async with AsyncClient(transport=transport, base_url="http://test") as client: yield client @pytest_asyncio.fixture async def db(): """获取数据库连接""" async with get_db() as db: yield db @pytest_asyncio.fixture async def proxy_repo(): """获取代理仓库""" return ProxyRepository() @pytest_asyncio.fixture async def sample_proxy(db, proxy_repo): """创建一个测试代理""" await proxy_repo.insert_or_update(db, "192.168.1.1", 8080, "http", 50) yield {"ip": "192.168.1.1", "port": 8080, "protocol": "http", "score": 50} # 清理 await proxy_repo.delete(db, "192.168.1.1", 8080)