美文网首页测试之路
#Python#用Python来实现测试中的排列组合//iter

#Python#用Python来实现测试中的排列组合//iter

作者: 我叫GTD | 来源:发表于2018-05-08 23:26 被阅读101次

    既然是测试,肯定会用到各种动作行为的排列组合来对一个功能进行全面测试。如果只有A,B,C三种动作,那排列会很简单,共6种可能。如果有10个,100个呢?这时就要考虑如何自动去实现这个功能了。
    Python内置模块itertools中便有实现这个功能的方法,即 permutations。首先介绍如何使用:


    生成排列组合

    注意,生成的是一个迭代器,并不是列表,如果想将其转换为列表,list(iter)就可以了。
    当然,好用的功能肯定不只一个,还提供一个可选的长度参数:


    输入长度参数
    上面是排列组合的形式,还有一种只组合,不排列的情况,这时 permutations 就有点靠不住了。该请出它的表兄了:
    itertools.combinations()可产生输入序列中所有组合形式,对于顺序是不予考虑的。
    itertools.combinations

    不过大家发现没有,combinations 只允许每个元素选择一次,也不是那么完美。胞兄上场:


    itertools.combinations_with_replacement
    可见 itertools.combinations_with_replacement()函数允许相同的元素得到多次选择。
    方法有了,将其用到测试中只需构建一个函数
    from itertools import permutations
    
    
    a = 'Action_A'
    b = 'Action_B'
    c = 'Action_c'
    num = 1
    
    def auto_gen(*args):
        container = []
        for i in args:
            container.append(i)
        return permutations(container)
        
            
    def run_tests(acts):
        global num  # 这两行可以初始化每轮测试的环境
        print('Round {} :'.format(num))
        num += 1
        for action in acts:
            print(action) # 执行每一轮测试的每一个Action
        
    
    if __name__ == '__main__':
        all_situations = auto_gen(a, b, c)
        for each in all_situations:
            run_tests(each)
    

    构造完成,代码中a, b, c对应的是每个动作。注意代码中的注释,每轮测试前要先将环境初始化。

    相关文章

      网友评论

      本文标题:#Python#用Python来实现测试中的排列组合//iter

      本文链接:https://www.haomeiwen.com/subject/hnlgrftx.html