Python 测试助手

面向 Python 项目的测试全流程助手。基于 pytest 框架,提供从单元测试、依赖模拟到异步测试的完整方案。支持测试驱动开发(TDD)和代码覆盖率统计,帮助你建立稳定可靠的 Python 测试体系。

这个技能能帮你做什么

如果你在用 Python 开发项目,这个技能能帮你写出高质量的测试代码。它基于 Python 生态中最流行的 pytest 测试框架,提供从写测试到跑测试再到看覆盖率的完整工作流。

简单说,它能帮你:

  • 写测试 —— 为 Python 代码编写结构清晰的单元测试
  • 模拟依赖 —— 用 Mock 模拟外部依赖(如数据库、API),让测试更快更稳定
  • 管理测试数据 —— 用 Fixtures 准备测试环境,自动清理
  • 参数化测试 —— 同一套测试逻辑,多组测试数据自动运行
  • 测异步代码 —— 测试 async/await 异步函数
  • 看覆盖 —— 统计代码覆盖率,确保测试充分

什么时候用

写新功能时 —— 先写测试定义好"这个功能应该做什么",再写代码实现它

修复 Bug 时 —— 先写一个测试复现这个 Bug,修复后测试自动通过

重构代码时 —— 测试确保重构前后功能不变,让你大胆改代码

审查代码时 —— 检查测试是否充分覆盖,有没有遗漏的场景

主要覆盖哪些场景

  1. 测试框架
    • pytest 基础:简单的断言语法,不需要复杂的类继承
    • 用 assert 写断言,pytest 会自动提供详细的错误信息
    • 支持多种测试标记:慢速测试、集成测试、单元测试
  2. 测试数据管理(Fixtures)
    • 创建可复用的测试数据准备逻辑
    • 支持设置和清理操作(数据库连接、临时文件等)
    • 不同的作用范围:每次测试、每个模块、整个测试会话
    • 自动执行(autouse):不需要在测试参数中显式声明
    • 共享 Fixtures:在 conftest.py 中定义,整个测试目录共用
  3. 依赖模拟(Mocking)
    • 模拟函数返回值,测试特定场景
    • 模拟异常抛出,测试错误处理
    • 模拟类实例和方法调用
    • 验证方法被调用的次数和参数
    • 支持异步函数的模拟
  4. 参数化测试
    • 同一套测试逻辑,多组不同输入数据
    • 自动生成多个测试用例,减少重复代码
    • 支持参数化 Fixtures,测试多种配置
  5. 异步测试
    • 测试 async/await 异步函数
    • 模拟异步依赖
    • 测试异步上下文管理器
  6. 异常测试
    • 验证代码在特定情况下抛出正确的异常
    • 检查异常的消息内容和属性
  7. 测试组织
    • 合理的目录结构:单元测试、集成测试、端到端测试分开
    • 用类组织相关测试
    • 用标记分类测试(慢速、集成等),方便选择性运行
  8. 覆盖率统计
    • 查看哪些代码被测试覆盖到了
    • 设置覆盖率门槛(建议 80% 以上)
    • 生成可视化报告,直观看到未覆盖的代码

怎么用

新手入门 —— 告诉它"我要为这个函数写测试",它会给你测试框架的建议和结构示例

排查问题 —— 测试失败了?把错误信息发给它,它会帮你分析可能的原因

模拟依赖时 —— 不确定怎么模拟某个外部服务?它会告诉你正确的写法

提升覆盖 —— 想提高代码覆盖率?它会给你建议哪些场景还需要测试

核心工作流

这个技能遵循"红 → 绿 → 重构"的经典测试驱动开发流程:

  1. 红(Red) —— 先写一个测试,它现在会失败(因为功能还没实现)
  2. 绿(Green) —— 用最少的代码让这个测试通过
  3. 重构(Refactor) —— 改进代码质量,同时确保测试仍然通过

最佳实践建议

  • 先写测试,再写代码(TDD)
  • 测试行为,而不是测试实现细节
  • 用 Fixtures 准备测试数据,避免重复代码
  • 模拟外部依赖,不要依赖真实的服务
  • 测试要独立,一个测试失败不影响其他测试
  • 给测试起描述性的名字,一看就知道测什么
  • 标记慢速测试和集成测试,平时只跑快速单元测试
  • 代码覆盖率目标:整体 80% 以上,核心逻辑尽量 100%

适用场景

  • Python 项目的单元测试和集成测试
  • 使用 pytest 作为测试框架的项目
  • 需要测试异步代码的项目
  • 需要测试覆盖率统计的项目
  • 希望实践 TDD 的团队
  • 测试外部依赖需要模拟的项目

不适用场景

  • 非 Python 项目(如 Java、JavaScript、Go)
  • 纯前端测试(如浏览器自动化测试)
  • 性能压力测试(负载测试、压力测试)
  • 不需要测试的脚本或一次性代码
v1.0.0 2026-07-17
下载