技能 python-testing-patterns
📦

python-testing-patterns

安全 ⚙️ 外部命令🌐 网络访问🔑 环境变量

编写更好的 Python 测试

也可从以下获取: wshobson,ActiveInferenceInstitute

编写可维护的测试具有挑战性。本技能提供全面的 pytest 模式,包括 fixtures、mocking、参数化和 TDD 工作流,帮助您构建可靠的测试套件。

支持: Claude Codex Code(CC)
🥉 75 青铜
1

下载技能 ZIP

2

在 Claude 中上传

前往 设置 → 功能 → 技能 → 上传技能

3

开启并开始使用

测试它

正在使用“python-testing-patterns”。 为 calculate_discount 函数编写测试,该函数接受 price 和 discount_percentage,返回折扣后的价格

预期结果:

基本测试文件,包含多个测试用例,涵盖正常折扣、零折扣和无效输入

正在使用“python-testing-patterns”。 创建具有 session 作用域的数据库连接测试 fixtures

预期结果:

使用适当的 yield/清理模式进行数据库资源管理的 fixture 设置

正在使用“python-testing-patterns”。 模拟 API 客户端获取用户数据的 HTTP 请求

预期结果:

使用 patch() 模拟 requests.get 的测试,处理不同的响应场景

安全审计

安全
v1 • 2/24/2026

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.

2
已扫描文件
947
分析行数
3
发现项
1
审计总数

检测到的模式

External Commands DocumentationNetwork Mocking ExamplesTest Fixture Configurations
审计者: claude

质量评分

38
架构
100
可维护性
87
内容
50
社区
100
安全
100
规范符合性

你能构建什么

新 Python 项目测试设置

为新 Python 项目设置完整的测试套件,包括 fixtures、conftest.py 配置和 CI/CD 集成

遗留代码测试覆盖

使用 mocking 隔离单元并使用参数化覆盖边界情况,为现有未测试代码添加测试

API 集成测试

使用 fixtures 提供测试数据,使用 mocking 处理外部服务调用,为 REST API 编写集成测试

试试这些提示

基本测试创建
为名为 [FUNCTION_NAME] 的函数创建 pytest 测试,该函数 [DESCRIPTION]。使用 AAA 模式。
Fixture 设置
创建具有 [SCOPE] 作用域的 pytest fixtures,为测试提供 [RESOURCE]。包括适当的设置和清理。
模拟外部调用
使用 unittest.mock 编写模拟 [EXTERNAL_SERVICE] 调用的测试。展示 patch 装饰器和上下文管理器两种方法。
参数化测试
使用 pytest.mark.parametrize 为 [FUNCTION] 创建参数化测试,测试 [EDGE_CASES]。

最佳实践

  • 使用描述性的测试名称,说明正在测试的内容和预期行为
  • 保持测试独立,具有适当的设置/清理 - 测试之间不共享状态
  • 遵循 AAA 模式:Arrange(设置)、Act(执行)、Assert(验证)清晰分离

避免

  • 避免使用 test_1 或 test_function 等不描述测试目的的测试名称
  • 当一个测试中的多个断言可以分成单独的测试时,不要将它们混合在一起
  • 避免测试实现细节而不是行为 - 测试代码做什么,而不是如何做

常见问题

单元测试和集成测试有什么区别?
单元测试隔离测试单个函数或类。集成测试测试多个组件如何协同工作,例如使用真实数据库测试 API 端点。
如何模拟不使用 requests 库的函数?
使用 unittest.mock.patch 装饰器或上下文管理器将任何函数或类替换为 Mock 对象。将函数路径作为字符串导入:@patch('module.function_name')。
什么是 fixture 作用域,何时应该使用每种作用域?
Function 作用域(默认)为每个测试创建 fixture。Class 作用域每个测试类创建一次。Module 作用域每个模块创建一次。Session 作用域整个测试会话创建一次。对昂贵的资源使用 session/module 作用域。
如何使用 pytest 测试异常?
使用 pytest.raises() 作为上下文管理器:with pytest.raises(ExpectedException): your_function()。可选地传递 match 参数来检查异常消息。
什么是测试驱动开发(TDD)?
TDD 是一种开发方法,您在编写代码之前先编写测试。循环:编写失败的测试(红),编写最小代码使其通过(绿),重构代码(重构)。有助于确保可测试的设计。
如何只运行匹配某个关键字的测试?
使用 pytest -k 标志:pytest -k 'test_name_pattern' 仅运行名称与模式匹配的测试。使用 pytest -m marker 运行具有特定标记的测试。