QC是一个测试工具,它可以让你写,你希望持有真,让计算机生成的随机测试用例来检查这些属性实际持有&NBSP性能;例如,如果你写的压缩和解压缩功能一些数据压缩程序,一个明显的特性测试是压缩和解压缩字符串还给原来的字符串。这里是你如何能表达的:
进口单元测试
进口QC
类TestCompression(unittest.TestCase的):
  @ qc.property
 高清test_compress_decompress(个体经营):
 “”“测试的压缩和解压缩返回原始数据”“”
 数据= qc.str()#的任意字符串。值是随机的。
  self.assertEqual(数据,解压缩(压缩(数据)),再版(数据))
这是用Python的内置单元测试框架,一个普通的测试(这就是为什么有这么多的样板)。或者,你可以做同样的事情用不同的测试框架,像微创详细,很愉快的鼻子。在@ qc.property装饰运行装饰功能好几次,每一次返回的值由功能,如qc.string()是不同的。换句话说,快速检查是几乎每一个单元测试框架在那里兼容;它不是特别苛刻。
像qc.str功能(),qc.int(),等等,产生某种类型的任意值。在上面的例子中,我们断言属性也适用于所有的字符串。当你运行测试,快速检查会产生随机字符串进行测试。
你会注意到,我说的“随机”,而不是“随机”。这是故意的。值的分配进行调整,以包括含有英文文本有趣的值,比如空字符串,或者在中间的NULL字符的字符串,或字符串。在一般情况下,快速检查试图给聪明刁钻值和随机性的一个很好的组合。这基本上是你会做什么,如果你有手工编写真正彻底的测试案例,但你不必这样做。在实践中,计算机有什么构成理智的数据更少先入为主,所以经常会发现,决不会想到你写测试用例的错误。它不知道如何下意识避免错误。
你并不限于内置任意值的功能。你可以用它们作为构建模块生成自己的。例如:
Point类(对象):
 高清__init __(个体经营,X,Y):
  self.x,self.y =浮动(X),浮点(Y)
DEF点():
 “”“获得任意点。”“”
  X = qc.int(-20,20)
  Y = qc.int(-34,50)
 返回点(X,Y)
那么你可以用它来在性能产生任意点的值。这里有一个鼻式的测试:
@ qc.property
高清test_triangle_inequality():
  PT =点()
 断言ABS(pt.x)+ ABS(pt.y)> =的Math.sqrt(pt.x ** 2 + pt.y ** 2),(pt.x,pt.y)
当你运行它,神奇的事情发生了:快速检查将尝试生成Point类为x和y的变量值刁钻,在一起,所以你会看到像点(0,0),(1,1),( 0,1),(385904,0),以及完全随机的像(584,-35809648)。换句话说,而不是仅仅绘制x和y值从随机数与在它的一些棘手值流,快速检查实际上将尝试生成x和y坐标的棘手的组合。
函数获得任意数据
- INT(低,高)为整数,可选范围低和高之间。
- 长(低,高)给出了多头,可选范围低和高之间。
- 浮动(低,高)给出的花车,可选范围低和高之间。无无穷大或NaN值。
  STR(长度=无,MAXLEN =无)给出类型str的字符串。编码是UTF-8。如果长度给出,琴弦会正是长。如果的maxlen给出,字符串长度将至多最多maxlen字符。
- unicode的(长度=无,MAXLEN =无)给出类型的unicode的unicode字符串。如果长度给出,琴弦会正是长。如果的maxlen给出,字符串长度将至多最多maxlen字符。
- 名()给出的名字,以Unicode。这些范围从平淡无奇,就像“约翰·史密斯”,在异国情调 - 含非中断空格,或电子邮件地址,或Unicode字符的基本多文种平面之外的名称。这是,如果有什么,比的名字少倒行逆施,你会在一个足够大的一套互联网数据看。
- nameUtf8()是相同的名称()进行编码('UTF8')。
- fromlist里(项目)返回从列表中随机物品。这是创建自己的任意数据发生器的功能是非常有用。
- randstr(长度=无,MAXLEN =所有的sys.maxint)给出了随机字节字符串。如果长度给出,琴弦会正是长。如果的maxlen给出,字符串长度将至多最多maxlen字节。
由海峡和Unicode产生的字符串是随机的,但一些努力已投入使他们充分倒行逆施,以揭示错误在一大堆的字符串处理代码。该名单是松散的基础上看到的名字处理代码崩溃的真实世界的数据,一遍又一遍又一遍,因为它变得越来越明显,世界是疯狂的恐怖记忆,我们真的在劫难逃。 (这种感觉传递,一旦你得到足够的测试覆盖率和事情终于停止崩溃。有希望!)
在qc.arbitrary名称和字符串例如数据可能是有趣的,因为更多的deteministic测试用例的数据源。随意借用它的任何。在内部是魔术,但神奇的内部零件,最有趣的是在qc.arbitrary和QC
要求:
- 在Python中
评论没有发现