You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否为Hypothesis测试的收缩(shrinking)阶段设置时间限制?

针对Hypothesis收缩过程设置时间限制的解决方案

当然可以给收缩过程单独设置时间限制,Hypothesis提供了几个实用参数来控制:

  • 使用shrink_timeout参数:在@hypothesis.settings装饰器中直接指定该参数(单位为秒),比如设置shrink_timeout=300,就能让收缩过程最多运行5分钟,超时后会停止并返回当前找到的最小用例。
  • 搭配max_shrinks参数:如果不想单纯依赖时间限制,还可以限制收缩的最大尝试次数,比如max_shrinks=1000,避免无限制的收缩操作消耗资源。
  • 全局超时timeout:若要给整个测试流程(包括用例生成和收缩)设置总时间上限,可使用timeout参数,但注意这会覆盖默认超时配置,需根据测试场景调整。

举个实际配置的例子:

from hypothesis import settings, Verbosity

@settings(
    verbosity=Verbosity.debug,
    shrink_timeout=300,  # 收缩过程最多运行5分钟
    max_shrinks=1000     # 最多尝试1000次收缩操作
)
def test_your_state_machine():
    # 你的RuleBasedStateMachine测试代码

另外,如果收缩过程耗时过于夸张,还可以临时关闭收缩(设置shrink=False),先定位到触发bug的原始用例,之后再针对性地开启收缩,能大幅节省前期排查时间。

内容的提问来源于stack exchange,提问作者HaskellElephant

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 02:17:34