使用基于 属性 的测试断言值错误

Asserting a value error with property based testing

我有一个函数 returns 一个数 num 的约数。如果数字为 negative.
,该函数会引发错误 我正在使用假设库来测试此函数,但我不确定如何使其成为基于 属性 的测试。

这是我的测试:

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

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

divisors(-3)改为divisors(num)

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

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

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

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

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