SuperAPI AI 工具集

pytest-domain-model-testing

测试与质量

查看项目

更新于 10-16 05:05

技能介绍

用途:该技能用于在 pytest 中有效测试领域层(domain layer)的纯业务逻辑。领域模型没有外部依赖,因此适合做彻底测试,目标是接近完美的覆盖率(95%–100%)。

适用时机:需要测试值对象、实体、领域逻辑,或希望达到 95% 领域覆盖率时使用。不适用于应用层(应使用 pytest-application-layer-testing)、适配器(应使用 pytest-adapter-integration-testing)或 mock 场景——领域测试应使用真实对象。

主要能力与用法:

  1. 值对象测试:验证创建、校验(如长度 1–500)、边界值(恰好 500 字符)、不可变性(frozen dataclass 赋值抛 AttributeError)、Unicode、空白处理、相等性、可哈希性与字符串表示。
  2. 实体测试:验证身份(相同 ID 视为相等)、业务逻辑(如 get_product_titles)、非法输入(空行项目、负数量、总价不匹配)。
  3. 领域异常测试:验证异常继承关系、消息匹配与通过基类捕获。
  4. 聚合不变量测试:至少一个行项目、总价为正、总价等于行项目之和、客户名非空。
  5. 领域服务测试:无状态计算,如 calculate_total、calculate_tax、apply_discount。
  6. 复杂值对象:Money 的加减乘、比较、拒绝负数。
  7. 参数化:用 @pytest.mark.parametrize 覆盖有效与无效用例。

限制:资料未提供安装命令、版本要求、收费信息或具体平台支持;示例代码中的部分实体(如 LineItem(...))为省略写法,需按实际项目补全。测试应避免 mock,直接实例化领域对象。