使用基于 属性 的测试断言值错误
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。
我有一个函数 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。