用途
python-testing 是一份用于指导 Python 测试设计、扩展与审查的技能文档,来源标识为 arthurzakirov/systemsmith,地址为 https://www.skills.sh/arthurzakirov/systemsmith/python-testing。其目标是在合适的架构边界上维持对可观察行为的信心,并主张把测试当作每次行为变更的一部分,而不是最后追加若干单元测试的收尾步骤。
主要能力
文档以若干原则组织测试工作:
-
先发现测试架构:在实现或修改测试前,检查仓库结构与既有测试约定,搜索范围不限于名为 tests 的目录,还包括 .feature 文件、BDD 步骤定义、集成/系统/端到端套件、契约测试、fixture、测试工具和相关 CI/测试配置。需要识别实际存在的测试层级、各层级的被测系统(SUT)、执行入口与结果观察方式,并追踪变更影响到的既有行为与契约。
-
在每一相关层级覆盖变更:一个变更不能仅因新增单元测试通过就算测试充分,应考虑仓库中所有存在的测试层级并更新受影响的可观察契约或场景,包括单元、组件/集成、契约、BDD、系统与端到端。若某层级无法测试,应说明具体限制,并在结束时报告检查了哪些层级、哪些已变更或已覆盖、哪些仍未验证。
-
先定义边界再决定调用与断言:每个测试范围都要定义并保持 SUT 边界,明确 SUT 是什么、入口边界是什么、观察边界是什么、哪些实现步骤刻意不属于本次测试契约。通过 SUT 的预期入口准备前置条件、执行动作并通过预期观察边界断言结果,不因内部组件易于访问就直接调用或断言内部中间结果。
-
即使行为由私有钩子实现,也测试公开行为:以 Pydantic 为例,若新增或修改字段/模型校验器,应通过 Model.model_validate(input_data) 等公开模型 API 来验证合法输入与非法输入下的结果,而不是直接测试私有方法。
-
共享行为优先使用可读的数据驱动用例:若多个用例验证同一行为规则只是输入与预期不同,优先使用决策表/参数化测试,如 pytest 的 @pytest.mark.parametrize,或 Gherkin 的 Scenario Outline 与 Examples;同时也警告不要过度参数化,强调可读性与低认知负荷。
-
测试组合行为,默认隔离外部副作用而非内部逻辑:默认采用协作式(sociable)单元测试,通过公开入口执行 SUT 并让其真实的确定性进程内协作者参与,断言返回、异常、状态、产物或在既定边界上的外部效应;仅在架构接缝处用 fake、stub 等替换网络、云操作、不受控数据库写入等慢速、昂贵、不确定或危险的外部依赖。
使用方式
该文档以原则、规则与示例的形式给出操作指引,用于在具体 Python 仓库中设计、扩展和审查测试,并包含事件驱动服务与数据管道等场景的边界示例,以及按同一系统边界组织 BDD 场景的建议。文档中标记为示例的代码片段展示了通过内存仓储等测试替身验证订单发运状态的做法,其名称与契约依仓库而定。
适用场景
适用于需要在既有仓库测试架构下修改或新增 Python 测试、审查测试覆盖与边界划分、以及为端到端/BDD 场景确定 SUT 与入口/观察边界的开发工作。
限制
资料未提供该技能的安装方式、版本、依赖、收费与价格、平台支持范围等信息,这些内容暂未提供。