Python 测试模式
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @org-02qudk26/python-testing-patterns。
技能介绍
要解决什么问题
Python 项目一旦进入协作与持续交付,没有可重复的测试往往意味着回归只能靠手工点、重构不敢动、CI 只能跑 lint。常见痛点包括:外部 API/数据库难以隔离、异步与并发行为难断言、fixture 组织混乱导致用例互相污染,以及「先写代码再补测」带来的设计债。
技能如何帮你落地
本技能围绕 pytest 生态,把单元测试、集成测试与 TDD 放在同一套叙事里,而不是零散技巧清单:
- Fixtures 与测试基础设施:如何分层组织
conftest.py、共享资源与作用域,避免每个文件重复造轮子。 - Mock 与外部依赖:对 HTTP 客户端、消息队列、第三方 SDK 做替身,让用例在本地与 CI 中稳定运行。
- 参数化与表驱动:用
@pytest.mark.parametrize覆盖边界条件,减少复制粘贴的断言块。 - 异步与并发:针对
async代码与多线程/协程场景,说明可操作的断言与隔离方式。 - 集成与数据库:在可控环境(事务回滚、测试库、容器化)下验证仓储层与 API 行为。
- 属性测试与失败调试:在需要时引入基于属性的思路,并给出定位 flaky 与失败用例的步骤。
更细的代码模式与示例见技能附带的 resources/implementation-playbook.md;使用时应先明确目标、约束与输入,再按步骤验证结果。
适用边界
任务与 Python 测试无关、或需要本技能范围外的专用框架(例如非 Python 栈、纯前端 E2E 专用工具链)时,不必强行套用。技能侧重模式与工程实践,不会替代你对业务域测试策略的最终决策。
使用场景
- 新 Python 服务要合入主分支前,为核心业务函数补齐 pytest 用例并覆盖边界分支
- 微服务依赖外部 HTTP 与消息队列,需在本地与 CI 中用 mock 跑通集成测试而不连真实环境
- 仓库层直接读写 PostgreSQL,要在事务回滚或独立测试库下验证 CRUD 与迁移相关逻辑
- 异步接口用 asyncio 实现,需编写可重复执行的并发场景测试并定位间歇性失败用例
适合人员
- 维护 Python 后端 API 的工程师,希望在每次 PR 前用自动化测试挡住回归而不是手工冒烟
- 负责多包单体或微服务仓库的技术负责人,需要统一 conftest 与 fixture 作用域避免用例互相污染
- 采用 TDD 迭代新功能的产品型开发,需要先写失败用例再实现业务逻辑以约束接口设计
- 在 CI/CD 流水线中接入测试门禁的 DevOps 工程师,需要可稳定运行的 mock 与数据库测试策略