Python 测试助手
面向 Python 项目的测试全流程助手。基于 pytest 框架,提供从单元测试、依赖模拟到异步测试的完整方案。支持测试驱动开发(TDD)和代码覆盖率统计,帮助你建立稳定可靠的 Python 测试体系。
这个技能能帮你做什么
如果你在用 Python 开发项目,这个技能能帮你写出高质量的测试代码。它基于 Python 生态中最流行的 pytest 测试框架,提供从写测试到跑测试再到看覆盖率的完整工作流。
简单说,它能帮你:
- 写测试 —— 为 Python 代码编写结构清晰的单元测试
- 模拟依赖 —— 用 Mock 模拟外部依赖(如数据库、API),让测试更快更稳定
- 管理测试数据 —— 用 Fixtures 准备测试环境,自动清理
- 参数化测试 —— 同一套测试逻辑,多组测试数据自动运行
- 测异步代码 —— 测试 async/await 异步函数
- 看覆盖 —— 统计代码覆盖率,确保测试充分
什么时候用
写新功能时 —— 先写测试定义好"这个功能应该做什么",再写代码实现它
修复 Bug 时 —— 先写一个测试复现这个 Bug,修复后测试自动通过
重构代码时 —— 测试确保重构前后功能不变,让你大胆改代码
审查代码时 —— 检查测试是否充分覆盖,有没有遗漏的场景
主要覆盖哪些场景
- 测试框架
- pytest 基础:简单的断言语法,不需要复杂的类继承
- 用 assert 写断言,pytest 会自动提供详细的错误信息
- 支持多种测试标记:慢速测试、集成测试、单元测试
- 测试数据管理(Fixtures)
- 创建可复用的测试数据准备逻辑
- 支持设置和清理操作(数据库连接、临时文件等)
- 不同的作用范围:每次测试、每个模块、整个测试会话
- 自动执行(autouse):不需要在测试参数中显式声明
- 共享 Fixtures:在 conftest.py 中定义,整个测试目录共用
- 依赖模拟(Mocking)
- 模拟函数返回值,测试特定场景
- 模拟异常抛出,测试错误处理
- 模拟类实例和方法调用
- 验证方法被调用的次数和参数
- 支持异步函数的模拟
- 参数化测试
- 同一套测试逻辑,多组不同输入数据
- 自动生成多个测试用例,减少重复代码
- 支持参数化 Fixtures,测试多种配置
- 异步测试
- 测试 async/await 异步函数
- 模拟异步依赖
- 测试异步上下文管理器
- 异常测试
- 验证代码在特定情况下抛出正确的异常
- 检查异常的消息内容和属性
- 测试组织
- 合理的目录结构:单元测试、集成测试、端到端测试分开
- 用类组织相关测试
- 用标记分类测试(慢速、集成等),方便选择性运行
- 覆盖率统计
- 查看哪些代码被测试覆盖到了
- 设置覆盖率门槛(建议 80% 以上)
- 生成可视化报告,直观看到未覆盖的代码
怎么用
新手入门 —— 告诉它"我要为这个函数写测试",它会给你测试框架的建议和结构示例
排查问题 —— 测试失败了?把错误信息发给它,它会帮你分析可能的原因
模拟依赖时 —— 不确定怎么模拟某个外部服务?它会告诉你正确的写法
提升覆盖 —— 想提高代码覆盖率?它会给你建议哪些场景还需要测试
核心工作流
这个技能遵循"红 → 绿 → 重构"的经典测试驱动开发流程:
- 红(Red) —— 先写一个测试,它现在会失败(因为功能还没实现)
- 绿(Green) —— 用最少的代码让这个测试通过
- 重构(Refactor) —— 改进代码质量,同时确保测试仍然通过
最佳实践建议
- 先写测试,再写代码(TDD)
- 测试行为,而不是测试实现细节
- 用 Fixtures 准备测试数据,避免重复代码
- 模拟外部依赖,不要依赖真实的服务
- 测试要独立,一个测试失败不影响其他测试
- 给测试起描述性的名字,一看就知道测什么
- 标记慢速测试和集成测试,平时只跑快速单元测试
- 代码覆盖率目标:整体 80% 以上,核心逻辑尽量 100%
适用场景
- Python 项目的单元测试和集成测试
- 使用 pytest 作为测试框架的项目
- 需要测试异步代码的项目
- 需要测试覆盖率统计的项目
- 希望实践 TDD 的团队
- 测试外部依赖需要模拟的项目
不适用场景
- 非 Python 项目(如 Java、JavaScript、Go)
- 纯前端测试(如浏览器自动化测试)
- 性能压力测试(负载测试、压力测试)
- 不需要测试的脚本或一次性代码
v1.0.0
2026-07-17
下载