【问题标题】:Asserting a value error with property based testing使用基于属性的测试断言值错误
【发布时间】:2020-08-09 17:52:21
【问题描述】:

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

这是我的测试:

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

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

【问题讨论】:

    标签: python pytest property-based-testing python-hypothesis


    【解决方案1】:

    divisors(-3) 更改为divisors(num)

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

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

    为了断言divisors func 返回set,将返回值分配给变量并使用isinstance。断言行可能类似于 assert isinstance(divisors(num), set)

    【讨论】:

      【解决方案2】:

      尚无 cmets 学分,因此提供此作为答案。

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

      【讨论】:

        猜你喜欢
        • 2021-12-09
        • 2014-08-06
        • 1970-01-01
        • 2022-01-16
        • 2016-03-01
        • 2021-12-05
        • 1970-01-01
        • 2011-03-25
        • 1970-01-01
        相关资源
        最近更新 更多