猿问

假设策略:对于每个“桶”,从桶中抽取一个值

我有以下方法在我的一项测试中生成随机数据:


import random


data_categories = {

    'a': [1, 2, 3],

    'b': [4, 5],

    'c': [6, 7, 8]

}


def make_record():

    return [random.choice(vals) for vals in data_categories.values()]

如何将其转换为假设策略?


这是我尝试使用hypothesis.strategies.composite,但很难知道我是否正确使用它:


import hypothesis.strategies as hs


@hs.composite

def make_record(draw):

    return [draw(hs.sampled_from(vals)) for vals in data_categories.values()]


慕容3067478
浏览 123回答 1
1回答

蝴蝶不菲

您的尝试基本上是正确的,只是字典迭代顺序可能不可靠 - 因此示例可能无法正确复制或缩小。我会写成内联,如:my_strategy = hs.tuples(    *[hs.sampled_from(data_categories[k]) for k in sorted(data_categories)]).map(list)
随时随地看视频慕课网APP

相关分类

Python
我要回答