SuperAPI AI 工具集

python-testing-strategies

编程与开发

查看项目

更新于 10-15 17:30

技能介绍

用途:为 FastAPI 异步接口提供测试模式参考,用于编写接口测试、搭建测试基础设施。

主要能力:一是 pytest-asyncio 配置,需在 pyproject.toml 中设置 asyncio_mode = "auto",否则异步测试可能被零收集或挂起;标记 @pytest.mark.asyncio 时默认 strict 模式也可用。二是测试客户端,异步测试应使用 httpx.AsyncClient 配合 ASGITransport,不要使用 TestClient。三是每个接口建议覆盖的用例:正常路径的增删改查、404 未找到、422 校验错误、受保护接口的 401 认证失败,以及软删除后记录不再返回。四是测试命名,例如 test_create_item、test_create_item_missing_name、test_get_item_not_found、test_get_item_soft_deleted。五是测试数据工厂,用带默认值的简单工厂函数,只覆盖当前测试关心的字段。

使用方式:运行命令包括 pytest 运行全部、pytest tests/test_items.py 运行单文件、pytest -k "test_create" 按名称匹配、pytest --tb=short -q 精简输出。

限制与注意:数据库状态会在测试间泄漏,需要每次测试使用干净数据库,可用 autouse=True 的 fixture 创建/删除表或在测试间清空。FastAPI 默认返回 snake_case 的 JSON,若 Pydantic 使用 alias_generator,断言应基于实际 JSON 键。异步测试忘记 await 会得到令人困惑的错误,出现 coroutine 对象说明缺少 await。完整 conftest.py、pyproject.toml 与工厂示例见资料中的 examples.md,本次未提供其具体内容。