gpt4 book ai didi

使用假设的python测试

转载 作者:太空宇宙 更新时间:2023-11-04 04:56:30 24 4
gpt4 key购买 nike

如果想要针对已知类型的输入参数进行测试,包假设提供了一组丰富的策略供使用。

考虑以下类及其使用假设的检验之一:

from hypothesis.strategies import floats, integers, one_of
from hypothesis import given
import unittest

class A:
def __init__(self, value=0):
assert isinstance(value, (int, float))
self.value = value

@property
def doubled(self):
return self.value * 2


class Test_A(unittest.TestCase):

@given(testval=one_of(floats(allow_infinity=False, allow_nan=False), integers()))
def test_A_instantiation(self, testval):
self.assertEqual(testval * 2, A(value=testval).doubled)


if __name__ == '__main__':
unittest.main()

这会检查两件事:隐式地检查提供的值是否属于可接受的类型,以及显式地检查 self.double 中的计算是否正确。

这个测试类至少可以被认为是不完整的,因为没有检查 float 或 int 以外的任何输入类型:对于那个需要另一个测试用例,直接检查断言错误,假设使用 AssertRaises。

我的问题是:您如何在假设检验哲学中做到这一点?

Hypothesis 似乎没有“not_one_of”策略,也就是说,您可以在其中定义诸如“除了这个那个类型之外的所有内置类型”之类的东西。这只剩下定义一个“one_of”策略的可能性,其中有一个长长的反弹类型列表可供选择。

注意:整个情况让我想起了侏罗纪公园中的根本问题,当时他们检查了是否有预期数量的恐龙,但从未检查过是否有更多。所以我认为没有简单的解决方案,但我昨天第一次尝试了假设,所以可能是我缺乏知识。

最佳答案

上述案例的测试永远无法完成,尤其是因为要点是关于测试断言。因此,如上所述,断言应该失败的单个测试就足够了。

关于使用假设的python测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46925128/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com