如何直接从数据类生成带有假设的测试样本?

How to generate test samples with Hypothesis directly from dataclasses?

我假设有两个数据类,其中一个在另一个内部使用,如下所示:

@dataclass(frozen=True)
class SensorModel:
    sensor_id: int
    type: str 
    health_status: bool 

@dataclass
class SamplingModel:
    trigger: str
    priority: str = field(init=False)
    time: datetime
    sensors: List[SensorModel]

我如何使用假设来生成我的测试样本?

我在文档中发现假设策略本身支持数据类 hypothesis 但没有关于如何在描述的简单情况下如何做到这一点的任何例子。

好的,所以我找到了答案,事实证明这真的很简单,您可以使用 from_type 生成器 from_type documentation

在我上面描述的简单示例中,可以做类似

的事情
@dataclass(frozen=True)
class SensorModel:
    sensor_id: int
    type: str 
    health_status: bool 

@dataclass
class SamplingModel:
    trigger: str
    priority: str = field(init=False)
    time: datetime
    sensors: List[SensorModel]

@given(sample=gen.from_type(SamplingModel))
def test_samples(sample):
    assert sample.trigger == sample.trigger #point-less test replace with your logic