-1

我有一个返回数字除数的函数num。如果 number 为 ,该函数将引发错误negative
我正在使用假设库来测试这个函数,但我不确定如何使它成为基于属性的测试。

这是我的测试:

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

此代码有效,但我如何更改它以使参数为“num”而不是硬编码。同样,对于任何数字 num,我如何断言一个是集合的一个元素。

4

2 回答 2

1

更改divisors(-3)divisors(num)

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

请记住,它strategies.integers()返回正数和负数,因此您需要传递max_value=0给它以仅生成负数。

为了断言divisorsfunc 返回set将返回值分配给变量并使用isinstance。断言行可能看起来像assert isinstance(divisors(num), set).

于 2020-04-26T10:16:10.140 回答
0

还没有评论,所以提供这个作为答案。

应该使用返回负数max_value=-1,因为 max_value 是一个包含边界,即如果设置为 0,则将采样 0。

于 2020-05-06T16:51:16.167 回答