Agent skill · software engineering · affaan-m

python-testing

使用pytest的Python测试策略,包括TDD方法、夹具、模拟、参数化和覆盖率要求。

Why this skill is useful

Provides specific pytest testing strategies, including TDD practices and fixture usage that the AI wouldn't reliably generate on its own.

What it needs

Requires pytest installed locally. About 7k tokens when loaded. Last updated 2026-08-06. 238,342 stars on the source repository.

What this skill does

Python 测试模式 使用 pytest、TDD 方法论和最佳实践的 Python 应用程序全面测试策略。 何时激活 编写新的 Python 代码(遵循 TDD:红、绿、重构) 为 Python 项目设计测试套件 审查 Python 测试覆盖率 设置测试基础设施 核心测试理念 测试驱动开发 (TDD) 始终遵循 TDD 循环: 1. 红:为期望的行为编写一个失败的测试 2. 绿:编写最少的代码使测试通过 3. 重构:在保持测试通过的同时改进代码 覆盖率要求 目标:80%+ 代码覆盖率 关键路径:需要 100% 覆盖率 使用 pytest --cov 来测量覆盖率 pytest 基础 基本测试结构 断言 夹具 基本夹具使用 带设置/拆卸的夹具 夹具作用域 带参数的夹具 使用多个夹具 自动使用夹具 使用 Conftest.py 共享夹具 参数化 基本参数化 多参数 带 ID 的参数化 参数化夹具 标记器和测试选择 自定义标记器 运行特定测试 在 pytest.ini 中配置标记器 模拟和补丁 模拟函数 模拟返回值 模拟异常 模拟上下文管理器 使用 Autospec 模拟类实例 模拟属性 测试异步代码 使用 pytest-asyncio 进行异步测试 异步夹具 模拟异步函数 测试异常 测试预期异常 测试异常属性 测试副作用 测试文件操作 使用 pytest 的 tmp\path 夹具进行测试 使用 tmpdir 夹具进行测试 测试组织 目录结构 测试类 最佳实践 应该做 遵循 TDD:在代码之前编写测试(红-绿-重构) 测试单一事物:每个测试应验证一个单一行为 使用描述性名称:testuserloginwithinvalidcredentialsfails 使用夹具:用夹具消除重复 模拟外部依赖:不要依赖外部服务 测试边界情况:空输入、None 值、边界条件 目标 80%+ 覆盖率:关注关键路径 保持测试快速:使用标记来分离慢速测试 不要做 不要测试实现:测试行为,而非内部实现 不要在测试中使用复杂的条件语句:保持测试简单 不要忽略测试失败:所有测试必须通过 不要测试第三方代码:相信库能正常工作 不要在测试之间共享状态:测试应该是独立的 不要在测试中捕获异常:使用 pytest.raises 不要使用 print 语句:使用断言和 pytest 输出 不要编写过于脆弱的测试:避免过度具体的模拟 常见模式 测试 API 端点 (FastAPI/Flask) 测试数据库操作 测试类方法 pytest 配置 pytest.ini pyproject.toml 运行测试 快速参考 模式 用法 --------- ------- pytest.raises() 测试预期异常 @pytest.fixture() 创建可重用的测试夹具 @pytest.mark.parametrize() 使用多个输入运行测试 @pytest.mark.slow 标记慢速测试 pytest -m "not slow" 跳过慢速测试 @patch() 模拟函数和类 tmppath 夹具 自动临时目录 pytest --cov 生成覆盖率报告 assert 简单且可读的断言 记住:测试也是代码。保持它们干净、可读且可维护。好的测试能发现错误;优秀的测试能预防错误。

How to use it

Reference it in AdaL, Claude Code, Cursor or any coding agent — nothing to install:

@skills affaan-m/python-testing--c6de01

View the source on GitHub

Browse the @skills marketplace