如何直接从数据类生成带有假设的测试样本?
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
我假设有两个数据类,其中一个在另一个内部使用,如下所示:
@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