易于使用,可扩展的随机测试库。
pyquchk的Python项目详细描述
pyquchk-随机和串行测试
pyquchk(python quickcheck的缩写)是最全面的 以及可扩展、易用、随机、串行的测试框架。 从名字上看,它的灵感来自 Haskell QuickCheck, 但目标是提供更多的能力。
完整的文档,包括使用示例,可在 pythonhosted.org/pyquchk。
功能
已经实施
pyquchk结合了两种方法来生成 单一框架:
QuickCheck-类(随机)
随机(模糊)测试对许多随机生成的参数运行一个函数 值以确保它通常是正确的。一些功能(都来自 原始的快速检查功能,仅限于pyquchk)
SmallCheck-类似(串行)
串行测试意味着从一些边缘情况和 小的。这会耗尽所有可能的值,直到达到某个“大小”,并且 确定性的,与随机方法相反。串行测试很好 对随机函数进行了补充,从而使函数测试的可信度更高 是正确的。
其他值得注意的功能包括:
许多可配置的内置生成器,用于不同的值类型 (请参见套利了解当前实施的生成器列表)
内置类型和用户创建的类型都支持自定义生成器
易于编写和读取的语法,用于简单的属性检查和完整的 要使用框架运行的测试(nose或py.test例如)
试图给你一个最小的反例, 总是对生成的值执行收缩(如果在 串行测试,可能已经很小了)
assume函数(允许所谓的条件属性等)
轻松创建套利组合
示例:列表中的字符串;具有相同大小字符串的元组。
计划
pyquchk正在积极开发中,我有许多特性要实现 这里:
选择检查exists,而不是for_all
测试计时
显示在pyquchk代码和测试函数中花费的时间
根据其他生成器值支持生成器参数
类似于原始quickcheck中的forAll,但所有内容都要定义为函数 默认参数。 示例:范围[0:len(list)]中的整数。
尺寸支持
generation函数接受将(从0增加到1?)的size参数。从第一个到 最后一次测试。从quickcheck中探索sized、resize等等-它们是否适合这里。
寻找最佳表达方式:
- 修饰语如正/负/非空/…
- 不同的数字分布,如均匀/指数/…
- 像def f(a={int:[str_(...)]},b=[float],c={'x': int, 'y': list}) 这样的结构
python 3注释有什么用处吗?
更好地测试pyquchk本身
来自QuickCheck的智能收缩,SmartCheck
收集、分类、覆盖
不仅是布尔参数(label/no label),还有数字参数。 例:近似函数结果与精确函数结果的差值。
详细设置
打印种子并允许更改它
不要快速失败
添加超时