Стратегия гипотез: для каждого «ведра» выведите одно значение из ведра - PullRequest
0 голосов
/ 04 октября 2018

У меня есть следующий метод генерации случайных данных в одном из моих тестов:

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 Ответ

0 голосов
/ 08 октября 2018

Ваша попытка в основном правильная, за исключением того, что порядок итераций в словаре может быть ненадежным - и, следовательно, примеры могут воспроизводиться или сокращаться неправильно.Я написал бы это как:

my_strategy = hs.tuples(
    *[hs.sampled_from(data_categories[k]) for k in sorted(data_categories)]
).map(list)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...