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

Python Hypothesis框架下同一参数如何使用多种测试策略

你最初的代码无法运行,是因为@given装饰器传入的策略数量和测试函数的参数数量不匹配。要实现单参数对应多策略的需求,可以直接使用Hypothesis内置的one_of策略,它可以将多个测试策略组合为一个,运行时会随机从所有传入的子策略中生成测试用例,不需要拆分多个测试函数。

正确的代码实现如下:

from hypothesis import given
from hypothesis.strategies import one_of, integers, floats
from your_module import IntervalBin, IntervalClosing # 替换为实际的导入路径

@given(values=one_of(integers(), floats()))
def test_lt_operator_interval_bin_numerical(values):
    interval_bin = IntervalBin(10, 20, IntervalClosing.Both)
    assert (interval_bin < values) == (interval_bin.right < values)

额外优化说明

  • 如果你的业务逻辑不需要处理浮点数的非法特殊值,可以给floats()加上参数过滤,比如floats(allow_nan=False, allow_infinity=False),避免无效测试用例导致断言失败。
  • 如果后续需要新增测试的数值类型(比如Decimal、分数等),只需要把对应的策略追加到one_of的参数列表中即可,无需额外修改测试逻辑,大幅降低代码冗余。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 22:54:05