pytest-domain-model-testing
如何有效地测试领域模型:值对象测试(不可变性、验证)、实体测试(标识、业务逻辑)、领域异常测试、聚合测试、高覆盖率模式(95%+),以及测试不变量和约束。使用场景:测试领域层代码、验证值对象、测试具有业务逻辑的实体、确保领域不变量,或在领域模型上实现95%以上的覆盖率。
把 Skill 的源码、资源快照、README、包体和安装信号放进一个可搜索、可筛选的公开目录。
如何有效地测试领域模型:值对象测试(不可变性、验证)、实体测试(标识、业务逻辑)、领域异常测试、聚合测试、高覆盖率模式(95%+),以及测试不变量和约束。使用场景:测试领域层代码、验证值对象、测试具有业务逻辑的实体、确保领域不变量,或在领域模型上实现95%以上的覆盖率。
测试适配器和网关:何时使用单元测试模拟与Testcontainers,模拟HTTP响应(aioresponses, responses),模拟Kafka消息,模拟ClickHouse响应,测试错误路径和边界情况。使用场景:测试网关和适配器,测试外部服务集成,决定在模拟与真实容器之间选择,测试适配器中的错误处理,与真实服务进行集成测试。
系统性地解决pyright/mypy类型错误,包括分类和修复模板。当pyright失败、报告类型错误、添加类型注解或强制类型安全时使用。分析Python类型错误,将其分类(缺少注解、类型不正确、一般问题、Optional/None处理),并应用修复模式。支持.py文件和pyright输出。
通过实现基数限制来防止无界度量标签导致的OutOfMemoryError。在向Micrometer度量添加标签、将URI或ID标准化为有界类别、监控度量爆炸或者避免高基数字段(如用户ID和请求ID)时使用。对于具有成本敏感监控后端的GKE生产微服务至关重要。
在代码库中查找所有REFACTOR标记,验证关联的ADR是否存在,识别过时的标记(30天以上),并检测孤立的标记(没有ADR引用)。可以在状态检查期间、功能完成之前或进行重构健康审计时使用。触发条件包括“检查重构状态”、“标记健康状况”、“当前状态是什么”,或者在标记功能完成之前主动触发。该工具支持Python (.py)、TypeScript (.ts) 和 JavaScript (.js) 文…
运行ruff代码检查和格式化,包括配置详情和常见修复。在检查代码风格、格式化文件、修复代码检查违规或提交前使用。解释了ruff check与ruff format的区别,--fix标志的用法,在pyproject.toml中的配置,以及常见的违规模式。适用于Python .py文件,目标版本为Python 3.12。
验证已实现的代码实际上已被集成到系统中并在运行时执行,防止出现“已完成但未集成”的失败。在标记功能完成、将架构决策记录(ADRs)移至完成状态之前、实现新的模块/节点/服务之后,或者声明“功能有效”时使用。当触发“验证实现”、“这是否已集成”、“检查代码是否已连接”、“证明它能运行”,或在宣布工作完成前使用。适用于Python模块、LangGraph节点、CLI命令、API端点和服务类。强制执行创…
基于证据的测试调试,强制执行系统性的根本原因分析。当测试失败、pytest错误出现、测试套件未通过、调试测试失败或修复损坏的测试时使用。通过强制执行正确的诊断顺序来防止基于假设的修复。支持Python (.py)、JavaScript/TypeScript (.js/.ts)、Go、Rust测试文件。支持pytest、jest、vitest、mocha、go test、cargo test等框架。
在所有测试中强制类型安全:为测试函数和fixture添加类型注解,使用mock autospec模式,为测试配置mypy,类型安全的断言,以及在mock中处理泛型类型。包括针对复杂场景的基于协议的类型标注和转换模式。使用场景:编写类型安全的测试、为测试文件配置mypy、在mock中使用协议、在CI/CD中强制类型检查,或者调试与类型相关的测试问题。
掌握pytest的模拟策略:何时使用autospec=True与手动模拟,异步代码的AsyncMock模式,模拟构建器和工厂,以及绝对不应该被模拟的内容。包括类型安全的模拟创建模式和模拟与真实对象之间的决策矩阵。使用场景:创建带有模拟依赖项的单元测试,决定是进行模拟还是使用真实对象,设置测试隔离,测试具有外部服务边界的应用场景,或构建可重用的模拟工厂。
在提交代码更改之前,使用结构化方法进行系统的自我审查
使用SimpleMeterRegistry在单元测试和集成测试中测试自定义的Micrometer指标。在为记录指标的服务编写测试时使用,操作后验证指标值,测试百分位数和直方图,或在没有完整Spring上下文的情况下断言指标行为。这对于确保业务逻辑中的指标被准确记录至关重要。
使用pyright(快速、开发用)和mypy(全面、CI/CD用)进行双重类型检查。在检查类型、提交前、调试类型错误或验证类型注解时使用。解释了为什么需要这两种工具,配置的不同之处以及何时使用每种工具。适用于Python .py文件、pyproject.toml,并启用了严格模式。
根据项目模式创建pytest fixture,包括工厂fixture、异步fixture以及多层组织。在设置测试fixture、创建测试数据、组织测试工具或构建conftest.py文件时使用。适用于Python测试文件、pytest配置和.py测试工具。
加载OpenSCAD文件,并通过解析use/include语句、解析库路径和提取API表面(模块、函数、参数)来提供完整的依赖上下文。在处理OpenSCAD文件、调试渲染问题、理解模块依赖关系或重构之前使用。触发条件包括“load scad”、“scad-load [file]”、“load openscad context”、“show scad dependencies”,或者在调查.scad…
在编写实现代码之前,强制执行考虑测试、功能和可维护性的纪律。在开始新的类/方法、重构现有代码或被要求“先思考测试”、“为可测试性设计”、“我需要哪些测试”、“测试优先的方法”或“TDD思维”时使用。通过提前考虑可测试性来促进简单且易于维护的设计。适用于任何需要测试覆盖率和质量标准的代码库。
使用@asynccontextmanager装饰器创建异步上下文管理器以进行资源管理。当管理异步资源、数据库会话、文件句柄、连接或任何需要自动清理的资源时,请使用此方法。与Python的async/await模式兼容。分析包含async with语句、AsyncIterator类型提示和try/finally模式的.py文件。
实现针对业务运营(如收费、发票、付款)的特定领域KPI指标。在为服务层操作提供工具、衡量业务流程结果、为KPI实施SLI/SLO监控或跟踪供应商/发票/费用生命周期事件时使用。面向Java/Spring Boot服务,提供结构化的业务指标以增强可观测性。
从零开始在Spring Boot服务中设置Micrometer指标,包括依赖项、执行器配置和注册表自定义。当启动新的微服务、配置指标导出后端、启用Prometheus抓取或自动配置JVM指标时使用。这是Java/Spring Boot应用程序中度量工具的基础技能。
通过运行质量门并存储结果在内存中以进行回归检测,捕获质量指标基线(测试、覆盖率、类型错误、代码检查、死代码)。在功能开始时、重构工作之前或重大更改后建立基线。在“捕获基线”、“建立基线”命令触发,或者在任何功能/重构工作的开始时主动触发。支持pytest输出、pyright错误、ruff警告、vulture结果以及用于基线存储的内存MCP服务器。
检测孤立代码(存在但从未在生产中导入或调用的文件/函数),防止“创建但未集成”的故障。在标记功能完成之前、将架构决策记录(ADRs)移至已完成之前、代码审查期间或作为质量门的一部分时使用。触发条件包括“检测孤立代码”、“查找死代码”、“检查未使用的模块”、“验证集成”,或在完成前主动进行。支持Python模块、函数、类和LangGraph节点。捕捉到ADR-013故障模式,即代码存在且测试通过但从…
验证组件是否已集成到系统中,而不仅仅是被创建。检测孤立的代码(存在但从未被导入)。在标记功能完成、将架构决策记录(ADRs)移至已完成文件夹或声称集成工作已完成之前使用。强制执行创建-连接-验证(CCV)原则。
通过运行质量门(类型检查、代码检查、死代码检测、测试)来强制执行完成定义。在任务完成时、提交前、声明“完成”时,或者当用户说“全部检查”、“运行质量门”、“验证代码质量”或“运行测试和代码检查”时使用。适应于Python(pyright/ruff/vulture/pytest)、JavaScript(tsc/eslint/jest)及其他生态系统。标记任务完成之前必须执行。
使用pytest-asyncio模式设置带有适当fixture和mock的异步测试。当测试异步函数、创建异步fixture、模拟异步服务或处理异步上下文管理器时使用。涵盖@ pytest_asyncio.fixture、具有side_effect的AsyncMock、异步生成器fixture(yield)以及测试异步上下文管理器。与Python async/await模式、pytest-async…