Утверждение ошибки значения при тестировании на основе свойств - PullRequest
0 голосов
/ 26 апреля 2020

У меня есть функция, которая возвращает делители числа num. Функция вызывает ошибку, если число равно negative.
Я использую библиотеку гипотез для проверки этой функции, но я не уверен, как сделать тест на основе свойств.

Это мой test:

@given(strategies.integers())
def test_valid(num):
    with pytest.raises(ValueError):
        divisors(-3)

Этот код работает, но как я могу изменить его так, чтобы аргумент был "num" вместо жесткого кодирования. Точно так же, как я могу утверждать, что один является элементом набора для любого числа num.

Ответы [ 2 ]

1 голос
/ 06 мая 2020

Комментариев пока нет, поэтому предоставляя это как ответ.

Для возврата отрицательных чисел следует использовать max_value=-1, поскольку max_value является включающей границей, т. Е. Если установлено значение 0, будет выбрано 0.

1 голос
/ 26 апреля 2020

Измените divisors(-3) на divisors(num)

@given(strategies.integers())
def test_valid(num):
    with pytest.raises(ValueError):
        divisors(num)

Имейте в виду, что strategies.integers() возвращает положительные и отрицательные числа, поэтому вам нужно передать ему max_value=0, чтобы сгенерировать только отрицательные значения.

Чтобы утверждать, что divisors fun c возвращает set, присвойте возвращаемое значение переменной и используйте isinstance . Линия подтверждения может выглядеть как assert isinstance(divisors(num), set).

...