用途:按 David MacIver 的风格编写属性测试(property-based testing),核心是让测试更实用、失败示例更小、回归可复现。
主要能力:介绍 Hypothesis 的集成式收缩(在生成过程中收缩,产出最简失败示例)、示例数据库(.hypothesis/examples/ 保存失败的选择序列并在后续运行优先重放)、组合式策略(用简单策略构建复杂生成器)、状态机测试(RuleBasedStateMachine、rule、invariant、Bundle)以及与 pytest 的集成。
使用方式:用 @given 装饰属性测试,用 @example 补充已知边界用例,用 assume() 过滤无效输入,用 @st.composite 定义自定义策略,用 st.recursive、st.builds、st.from_type、st.data() 等生成复杂数据;用 settings 与 register_profile 区分本地与 CI(如 HYPOTHESIS_PROFILE=ci pytest),用 @reproduce_failure 复现失败。
适用场景:排序、序列化往返、压缩解压往返、API 不崩溃、键值存储与队列等有状态组件的一致性验证。
限制与注意:资料未提供安装命令、版本要求、性能数据或收费信息;建议提交 .hypothesis 目录、max_examples 不低于 100、不要手动最小化失败用例、不要用 random 替代策略、不要用 filter() 代替 assume()。