Testing 组合试验数据

Testing 组合试验数据,testing,Testing,我希望能够使用一组边缘情况和正常值的元组测试函数。例如,在测试一个函数时,当给定三个长度组成一个有效的三角形时,返回true,我会有特定的情况,负数、小数、大数、接近溢出的值等等。然后生成这些值的组合,有无重复,以获得一组测试数据 > (inf,0,-1), (5,10,1000), (10,5,5), (0,-1,5), (1000,inf,inf), > > ... 使用全新的Python 2.6,您可以使用itertools模块获得一个标准解决方案,该模块返回iter

我希望能够使用一组边缘情况和正常值的元组测试函数。例如,在测试一个函数时,当给定三个长度组成一个有效的三角形时,返回true,我会有特定的情况,负数、小数、大数、接近溢出的值等等。然后生成这些值的组合,有无重复,以获得一组测试数据

> (inf,0,-1), (5,10,1000), (10,5,5), (0,-1,5), (1000,inf,inf),
> 
> ...

使用全新的Python 2.6,您可以使用itertools模块获得一个标准解决方案,该模块返回iterables的笛卡尔乘积:

import itertools

print list(itertools.product([1,2,3], [4,5,6]))
   [(1, 4), (1, 5), (1, 6),
   (2, 4), (2, 5), (2, 6),
   (3, 4), (3, 5), (3, 6)]
您可以提供一个“repeat”参数,以使用iterable和自身执行产品:

print list(itertools.product([1,2], repeat=3))
[(1, 1, 1), (1, 1, 2), (1, 2, 1), (1, 2, 2),
(2, 1, 1), (2, 1, 2), (2, 2, 1), (2, 2, 2)]
您还可以使用组合来调整某些内容:

print list(itertools.combinations('123', 2))
[('1', '2'), ('1', '3'), ('2', '3')]
如果顺序很重要,则有排列:

print list(itertools.permutations([1,2,3,4], 2))
[(1, 2), (1, 3), (1, 4),
   (2, 1), (2, 3), (2, 4),
   (3, 1), (3, 2), (3, 4),
   (4, 1), (4, 2), (4, 3)]
当然,所有这些很酷的东西做的事情并不完全相同,但你可以用它们来解决你的问题


请记住,您可以使用list()、tuple()和set()将元组或列表转换为集合,反之亦然。

对于全新的Python 2.6,您可以使用itertools模块的标准解决方案返回iterables的笛卡尔积:

import itertools

print list(itertools.product([1,2,3], [4,5,6]))
   [(1, 4), (1, 5), (1, 6),
   (2, 4), (2, 5), (2, 6),
   (3, 4), (3, 5), (3, 6)]
您可以提供一个“repeat”参数,以使用iterable和自身执行产品:

print list(itertools.product([1,2], repeat=3))
[(1, 1, 1), (1, 1, 2), (1, 2, 1), (1, 2, 2),
(2, 1, 1), (2, 1, 2), (2, 2, 1), (2, 2, 2)]
您还可以使用组合来调整某些内容:

print list(itertools.combinations('123', 2))
[('1', '2'), ('1', '3'), ('2', '3')]
如果顺序很重要,则有排列:

print list(itertools.permutations([1,2,3,4], 2))
[(1, 2), (1, 3), (1, 4),
   (2, 1), (2, 3), (2, 4),
   (3, 1), (3, 2), (3, 4),
   (4, 1), (4, 2), (4, 3)]
当然,所有这些很酷的东西做的事情并不完全相同,但你可以用它们来解决你的问题

请记住,可以使用list()、tuple()和set()将元组或列表转换为集合,反之亦然