python的quickcheck

props的Python项目详细描述


道具

pythonαla的基于属性的测试 QuickCheck

for_all

for_all获取生成器列表(见下文)和属性。它 然后测试生成器的任意值的属性。

下面是一个测试 ints:

for_all(int,int)(lambdaa,b:a+b==b+a)for_all(int,int)(lambdaa,b:a*b==b*a)for_all(int,int,int)(lambdaa,b,c:c*(a+b)==a*c+b*c)

属性

属性是获取生成器实例并返回 True如果满足条件:

defprop_associative(a,b,c):returna+(b+c)==(a+b)+cfor_all(int,int,int)(prop_associative)for_all(float,float,float)(prop_associative)# Warning: float isn't actually associative!

属性也可以通过提高AssertionError

提前失败
defprop_list_append_pop(list,element):ifelementnotinlist:list.append(element)assertelementinlistlist.pop()returnelementnotinlistreturnelementinlistfor_all(list,int)(prop_list_append_pop)

发电机

注意:这些与python生成器不同。我们应该重新命名 他们。发电机?布莱奇。

生成器是一组可能的python对象的规范。一个 生成器为:

  • 以下内置类型之一:
    • Noneboolintfloatlongcomplexstrtuplesetlist,或dict
  • 实现ArbitraryInterface
  • 的类
  • 或者使用生成器组合器构造。

组合子

  • maybe_a
    • 生成指定生成器的任意值或 None
  • maybe_an
    • maybe_a的别名。提供句法上的便利。
  • one_of
    • 生成指定生成器之一的任意值。
  • tuple_of
    • 通过为每个指定的 发电机。
  • set_of
    • 生成指定生成器的同构集。你可以 使用set生成非齐次集。
  • list_of
    • 生成指定生成器的同构列表。你可以 使用list生成非同构列表。
  • dict_of
    • 使用 夸格斯。可以使用dict生成非齐次dict。

arbitrary

arbitrary获取生成器并返回 发电机。

任意接口

我们提供了一种混合方法,其中一种方法是{TT30}$,它提出 NotImplementedError。为您自己的类实现生成器, 请从任意接口继承并提供 arbitrary

下面是一个二叉树类的示例实现:

classBinaryTree(ArbitraryInterface):...@classmethoddefarbitrary(cls):returnarbitrary(one_of(Leaf,Node))classLeaf(BinaryTree):...@classmethoddefarbitrary(cls):returncls(...)# an instance of Leaf.classNode(BinaryTree):...@classmethoddefarbitrary(cls):returncls(...# This is equivalent:arbitrary(BinaryTree),# to this:BinaryTree.arbitrary())# an instance of Node with two subtrees.

抽象测试接口

我们还提供了一个^ {TT35}$,可以混合 对于实现^{tt17}的每个类的测试用例$ 要确保实现arbitrary方法:

classTestBinaryTree(AbstractTestArbitraryInterface,TestCase):defsetUp(self):self.cls=BinaryTree

待办事项

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java JNLP无法在浏览器中正确启动(与dtjava.js一起部署)   在执行下一个方法之前,java将等待线程执行结束   java如何将另一个LayoutManager应用于JComboBox?(多栏JComboBox尝试)   使用jPBC在java中实现双线性配对   java在使用@RequestMapping注释时获取请求的值(URL)   java如何控制流量   java如何获取IFC对象的绝对坐标?   java目标服务器无法使用htmlunit和tor响应异常   java需要帮助创建一个循环结构来运行我的程序   java有可能拥有一个Android APK并在应用程序中更改构建变体吗?   在Sphinx4中运行Ant的java   Java:从ArrayList获取子列表的有效方法   java如何使在循环内部创建的数组在循环外部工作?   apache poi通过java中的XSSF表从单元格读取日期值   安卓 java自己的SeqLock实现,避免spinlock会更好吗?   java的并发底层方法。util。同时发生的预定未来   java比较方法违反了它的一般约定,如何使它具有可传递性?   使用JAVA定向指定类的DB导出子类   一个方法中的java更改特定imageView