SuperAPI AI 工具集

python-testing

测试与质量

查看项目

更新于 10-24 02:39

技能介绍

python-testing 是一个 Python 测试技能,优先级标注为 P0(关键)。它面向使用 pytest 编写 Python 服务测试的场景,涵盖异步测试、monkeypatch、边界聚焦的 fake 等做法。

用途 该技能用于指导编写 Python 测试、fixture、异步测试与回归测试,尤其关注服务边界与领域不变量的验证。

主要能力与规则

  • 使用 pytest 和 pytest-asyncio 处理异步边界。
  • 为契约解析、工作流路由和验证器结果添加回归测试([BE-TEST-05])。
  • 对等价输入优先使用 pytest.mark.parametrize;不同场景可保持独立([BE-TEST-01])。
  • 在外部接缝处优先使用 fake 或 monkeypatch:数据库、RPC、Telegram、子进程、Docker([BE-TEST-02]、[BE-TEST-04])。
  • 验证行为与领域不变量,而不是浅层的真假判断或实现细节([BE-TEST-03])。
  • 覆盖率仅作诊断用途,由项目自行配置;应验证按风险加权的关键路径,而不是为凑任意百分比而填充代码。

核心规则要点

  • [BE-TEST-01] 等价输入使用参数化测试。
  • [BE-TEST-02] 禁止脆弱的 SQL 字符串匹配:直接测试纯领域计算,或使用 fake/testcontainers,不在 mock 中对 SQL 字符串做正则匹配。
  • [BE-TEST-03] 禁止浅层断言:不要只断言返回结果,而要检查领域属性与不变量。
  • [BE-TEST-04] 禁止透传式接缝 mock:仓储与适配器必须测试契约符合性与错误映射,禁止一对一透传回显式 mock。
  • [BE-TEST-05] 缺陷优先的回归锁定:每个修复缺陷工单或标题含 fix(...) 的 PR,必须先引入一个复现缺陷的失败测试,再修复它。

使用方式(Recipe)

  1. 先为边界或回归写出失败测试([BE-TEST-05])。
  2. 在足够高的一个接缝处打补丁,以保持测试可读([BE-TEST-04])。
  3. 断言结构化结果:元数据、路由结果、阻塞文本、发出的命令([BE-TEST-03])。
  4. 异步代码使用异步测试;避免手动启动真实事件循环。
  5. 覆盖负向路径:格式错误的报文、过期的运行时状态、缺失的环境变量。

反模式

  • [BE-TEST-01] 风格化参数化改写:不要在无行为差异的情况下要求对已通过的测试做参数化重写。
  • [BE-TEST-02] SQL 正则匹配:不要在 mock 中对 SQL 字符串做正则匹配。
  • [BE-TEST-03] 浅层断言:永远不要只写 assert result,始终验证领域属性与不变量。
  • [BE-TEST-04] 透传式接缝 mock:禁止无契约断言的 1:1 mock 回显。
  • [BE-TEST-05] 无复现测试的缺陷修复:禁止在缺少复现测试的情况下修复缺陷。
  • 单元测试中不连真实网络或数据库:使用 fake 或 testcontainers。
  • 不做大范围 monkeypatch 喷洒:只修补边界,而不是其下每个辅助函数。
  • 共享运行时改动不能只做冒烟验证:需补充聚焦断言。

适用场景 适用于编写 Python 测试、fixture、异步测试、回归测试,以及在服务接缝(数据库、RPC、消息平台、子进程、容器)处使用 fake。

限制 资料未提供具体安装命令、依赖版本、支持的 Python 版本或收费信息。