SuperAPI AI 工具集

fastmcp-python-tests

编程与开发

查看项目

更新于 10-15 22:40

技能介绍

用途:为 FastMCP 项目编写、评审和调试 Python 测试,提升测试覆盖率与可维护性。

主要能力与规范:

  1. 原子化测试:每个测试只验证单一行为,测试名应能说明失败原因;同一行为的多个断言可接受,不同行为应拆分为独立测试。
  2. 参数化:用 @pytest.mark.parametrize 覆盖同一概念的不同输入;逻辑不同的行为不要参数化。
  3. 异步测试:项目全局设置 asyncio_mode = "auto",直接写 async def 测试,不要加 @pytest.mark.asyncio。
  4. 导入:所有 import 放在模块顶部,禁止函数内局部导入。
  5. 传输方式:测试时把 FastMCP 服务器直接传给 Client 使用内存传输;仅在明确测试网络功能时才用 HTTP 传输。
  6. API 版本约束:result.data 是 FastMCP v3+(含 v4)的访问方式;旧版 v2 的 result[0].text 在 v3+ 会抛 AttributeError,新测试中禁止使用。
  7. 内联快照:用 inline-snapshot 测试 JSON schema 与复杂结构,assert schema == snapshot(),首次运行自动填充。
  8. 夹具:优先函数作用域夹具;文件操作使用 tmp_path。
  9. Mock:在边界处 Mock,外部服务用 AsyncMock,不要 Mock 自己拥有的内部类。
  10. 命名与错误测试:使用描述场景的名称;用 pytest.raises 并配合 match 校验异常信息。

常用命令: pytest -n 2 --inline-snapshot=create 填充空快照;pytest -n 2 --inline-snapshot=fix 在有意变更后更新;uv run pytest -n 2 并行运行全部测试;uv run pytest -n 2 -x 首次失败即停止;uv run pytest -n 2 path/to/test.py 运行指定文件;uv run pytest -n 2 -k "test_name" 按名称匹配;uv run pytest -n 2 -m "not integration" 排除集成测试。

适用场景:编写新测试、评审测试代码、调试测试失败、改进覆盖率。

限制:资料未提供该技能的安装方式、收费、平台支持范围及具体版本兼容细节,暂未提供。