Python 测试
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3c6cb52e/py-test-1784987008。
技能介绍
要解决什么问题
在 Python 项目里,测试往往卡在「该测什么、怎么拆用例、断言写在哪一层」——而不是缺一个 pytest 命令。模块边界不清时,单元测试容易变成对实现细节的锁死;集成测试又容易拖慢本地反馈。团队若缺少统一约定,还会出现 fixture 散落、mock 滥用、以及「只跑 happy path」的覆盖率假象。
本技能面向开发编程场景,帮助你在写业务代码的同时,把测试当成可维护的工程资产来组织,而不是事后补几行 assert。
技能如何协助你
在与大模型协作时,技能会把对话约束在 Python 测试相关的语境里,典型包括:
- 用例分层:区分纯函数/领域逻辑与 I/O、数据库、HTTP 等外部依赖,决定何时用
unittest.mock或pytestfixture 隔离。 - 结构与命名:按模块或行为组织
tests/,用可读的测试名表达「给定—当—则」,减少「test_1」类维护成本。 - 断言与数据:选用合适的断言方式(
pytest.raises、参数化、subtests等),避免脆弱的字面量比对。 - 回归与重构:在改实现时先明确「行为契约」再改测试,避免测试与实现同进退却测不到真实风险。
原始技能说明极为简短(Test),实际能力主要来自你在对话中提供的代码上下文与目标;技能的作用是聚焦问题域,而不是替代本地测试运行器。
适用边界与注意点
- 技能不会替你执行测试、生成 CI 配置或保证覆盖率达标;仍需在本地或流水线中运行
pytest/unittest并解读失败栈。 - 对异步、多进程、GUI 等场景,需要你在提示中说明框架与约束,否则建议可能过于通用。
- 安全敏感或合规场景下,测试数据与密钥管理须按你们团队规范处理,不要依赖模型「猜」环境变量。
若项目已有测试规范文档,把关键片段贴进对话,效果通常比泛泛问「怎么写测试」更好。
使用场景
- 重构某个 Python 模块前,先让助手根据现有行为列出应保留的断言与边界用例
- 为新写的 API 处理函数设计 `pytest` 参数化用例,覆盖空输入与异常分支
- 集成测试里需要 mock 数据库会话,想确认 fixture 放在哪一层、避免测到 ORM 实现细节
- CI 里某条测试偶发失败,带着 traceback 让助手判断是竞态还是断言写得太脆
适合人员
- 维护中型 Flask/FastAPI 服务、需要在改路由逻辑时同步更新测试的后端工程师
- 从脚本迁到可安装包结构的个人开发者,想把 `tests/` 目录和命名规范一次性理顺
- 带新人做 code review、希望统一「何时 mock、何时打真实依赖」的 Tech Lead
- 负责遗留 Django 项目,要在不扩大测试范围的前提下给核心模型补回归用例的维护者