在软件测试过程中,有时候会遇到多种组合条件的情况。比如一个查询功能,有5个查询字段,每个查询字段都有不同的可选项,这样组合起来的查询条件就非常多了。手工一个个写,那是绝对不可能的。一层层的for循环,看上去又太丑。这个时候python内置的模块itertools就派上用处了。
举例如下
1
2
3
4
5
6
7
8
9
10
import itertools
a = [0, 1]
b = [1, 2, 3, 4]
c = [0, 1]
d = [1, 2, 5, 17]
query = list(itertools.product(a, b, c, d))
print(query)
print(len(query))
运行结果如下
1
2
[(0, 1, 0, 1), (0, 1, 0, 2), (0, 1, 0, 5), (0, 1, 0, 17), (0, 1, 1, 1), (0, 1, 1, 2), (0, 1, 1, 5), (0, 1, 1, 17), (0, 2, 0, 1), (0, 2, 0, 2), (0, 2, 0, 5), (0, 2, 0, 17), (0, 2, 1, 1), (0, 2, 1, 2), (0, 2, 1, 5), (0, 2, 1, 17), (0, 3, 0, 1), (0, 3, 0, 2), (0, 3, 0, 5), (0, 3, 0, 17), (0, 3, 1, 1), (0, 3, 1, 2), (0, 3, 1, 5), (0, 3, 1, 17), (0, 4, 0, 1), (0, 4, 0, 2), (0, 4, 0, 5), (0, 4, 0, 17), (0, 4, 1, 1), (0, 4, 1, 2), (0, 4, 1, 5), (0, 4, 1, 17), (1, 1, 0, 1), (1, 1, 0, 2), (1, 1, 0, 5), (1, 1, 0, 17), (1, 1, 1, 1), (1, 1, 1, 2), (1, 1, 1, 5), (1, 1, 1, 17), (1, 2, 0, 1), (1, 2, 0, 2), (1, 2, 0, 5), (1, 2, 0, 17), (1, 2, 1, 1), (1, 2, 1, 2), (1, 2, 1, 5), (1, 2, 1, 17), (1, 3, 0, 1), (1, 3, 0, 2), (1, 3, 0, 5), (1, 3, 0, 17), (1, 3, 1, 1), (1, 3, 1, 2), (1, 3, 1, 5), (1, 3, 1, 17), (1, 4, 0, 1), (1, 4, 0, 2), (1, 4, 0, 5), (1, 4, 0, 17), (1, 4, 1, 1), (1, 4, 1, 2), (1, 4, 1, 5), (1, 4, 1, 17)]
64
如果觉得组合场景太多,可以使用python内置的random模块,随机选一部分组合。这样就能很好地用到测试工作中了。而且这样写起来也清晰,后期维护也方便。