python-testing-patterns
编写更好的 Python 测试
也可从以下获取: wshobson,ActiveInferenceInstitute
编写可维护的测试具有挑战性。本技能提供全面的 pytest 模式,包括 fixtures、mocking、参数化和 TDD 工作流,帮助您构建可靠的测试套件。
下载技能 ZIP
在 Claude 中上传
前往 设置 → 功能 → 技能 → 上传技能
开启并开始使用
测试它
正在使用“python-testing-patterns”。 为 calculate_discount 函数编写测试,该函数接受 price 和 discount_percentage,返回折扣后的价格
预期结果:
基本测试文件,包含多个测试用例,涵盖正常折扣、零折扣和无效输入
正在使用“python-testing-patterns”。 创建具有 session 作用域的数据库连接测试 fixtures
预期结果:
使用适当的 yield/清理模式进行数据库资源管理的 fixture 设置
正在使用“python-testing-patterns”。 模拟 API 客户端获取用户数据的 HTTP 请求
预期结果:
使用 patch() 模拟 requests.get 的测试,处理不同的响应场景
安全审计
安全All 87 static findings are false positives. The detected patterns (external_commands, network, env_access) are documentation examples of pytest commands, HTTP mocking patterns, and test fixture configurations - all legitimate testing education content. No actual security threats present.
风险因素
⚙️ 外部命令 (1)
🌐 网络访问 (1)
🔑 环境变量 (1)
检测到的模式
质量评分
你能构建什么
新 Python 项目测试设置
为新 Python 项目设置完整的测试套件,包括 fixtures、conftest.py 配置和 CI/CD 集成
遗留代码测试覆盖
使用 mocking 隔离单元并使用参数化覆盖边界情况,为现有未测试代码添加测试
API 集成测试
使用 fixtures 提供测试数据,使用 mocking 处理外部服务调用,为 REST API 编写集成测试
试试这些提示
为名为 [FUNCTION_NAME] 的函数创建 pytest 测试,该函数 [DESCRIPTION]。使用 AAA 模式。
创建具有 [SCOPE] 作用域的 pytest fixtures,为测试提供 [RESOURCE]。包括适当的设置和清理。
使用 unittest.mock 编写模拟 [EXTERNAL_SERVICE] 调用的测试。展示 patch 装饰器和上下文管理器两种方法。
使用 pytest.mark.parametrize 为 [FUNCTION] 创建参数化测试,测试 [EDGE_CASES]。
最佳实践
- 使用描述性的测试名称,说明正在测试的内容和预期行为
- 保持测试独立,具有适当的设置/清理 - 测试之间不共享状态
- 遵循 AAA 模式:Arrange(设置)、Act(执行)、Assert(验证)清晰分离
避免
- 避免使用 test_1 或 test_function 等不描述测试目的的测试名称
- 当一个测试中的多个断言可以分成单独的测试时,不要将它们混合在一起
- 避免测试实现细节而不是行为 - 测试代码做什么,而不是如何做