代码之家  ›  专栏  ›  技术社区  ›  shadowtalker

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

  •  0
  • shadowtalker  · 技术社区  · 7 年前

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

    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()]
    
    1 回复  |  直到 7 年前
        1
  •  1
  •   Zac Hatfield-Dodds    7 年前

    my_strategy = hs.tuples(
        *[hs.sampled_from(data_categories[k]) for k in sorted(data_categories)]
    ).map(list)