我用假设来检验,我想在检验的两个参数之间建立一种关系。我知道assume
,但当我事先知道约束时,这似乎相当浪费。你知道吗
下面是一个简单的例子:
from datetime import date
import pytest
from hypothesis import given, assume, strategies as st
def get_daterange_filter(start, end):
"""`start` and `end` are dates of the format: YYYYMMDD"""
if int(start) > int(end):
raise ValueError(f"{start} comes after {end}")
else:
pass
dt_strategy = st.dates(min_value=date(2019, 4, 1),
max_value=date(2019, 7, 31))
@given(dt_strategy, dt_strategy)
def test_daterange_filter(dt1, dt2):
assume(dt1 > dt2)
start, end = dt1.strftime("%Y%m%d"), dt2.strftime("%Y%m%d")
with pytest.raises(ValueError):
get_daterange_filter(start, end)
上述统计摘要报告如下:
hypo.py::test_daterange_filter:
- 100 passing examples, 0 failing examples, 68 invalid examples
- Typical runtimes: 0-1 ms
- Fraction of time spent in data generation: ~ 47%
- Stopped because settings.max_examples=100
那是浪费的尝试。这是一个非常简单的案例,但在一个典型的数据密集型项目中,我可以预见许多这样的场景。所以我想知道,是否有一个简单的方法来判断两个参数满足某种关系的假设(在这个例子中,一个大于另一个)。我在文件里找不到任何东西。你知道吗
如果您需要相互依赖的策略,请使用策略共享:
运行更多记录时间的示例:
相关问题 更多 >
编程相关推荐