美文网首页python
通过python自动生成接口测试用例

通过python自动生成接口测试用例

作者: 测试_飞鸟 | 来源:发表于2019-06-05 15:03 被阅读175次

    以前做接口自动化测试时,有想过如何批量生成接口测试用例,研究了一下,实现了一个简单模型。

    1、首先定义一个列表作为接口的参数信息(假定这是一个增加用户的接口,需要带这么多参数),如下:
    case_list= [    # 名称        类型      最小长度min    最大长度mxa  是否必填  选项值    array    格式校验
                           ['name',     'string',        '6',                  '30',              'yes',           '',          'no',        ''      ],
                           ['sex',           'int',           '',                    '',                  'no',          '1,2',       'yes',       ''     ],
                           ['age',           'int',           '',                    '',                  'no',            '',          'no',        ''     ],
                           ['email',       'string',      '6',                 '250',               'no',            '',          'no',    '邮箱格式'],
                           ['mark',       'string',        '4',                  '30',              'no',             '',          'no',        ''    ],
                           ['mobile',     'string',       '11',                 '11',              'no',             '',          'no',    '手机格式'],
                           ['birth',          'date',         '',                    '',                  'no',            '',           'no',    '日期格式']

               ]

    2、根据参数的不同类型定义能够生成的用例名称
    根据字符串类型生成用例名称:
    def process_str(para_name, para_min, para_max):
        print('用例名称: %s 参数长度为 %d' % (para_name, int(para_min)-1))
        print('用例名称: %s 参数长度为 %d' % (para_name, int(para_max)+1))
    if para_min == para_max:
        print('用例名称: %s 参数长度为 %d' % (para_name, int(para_max)))
    else:
        print('用例名称: %s 参数长度为 %d' % (para_name, int(para_min)))
        print('用例名称: %s 参数长度为 %d' % (para_name, int(para_max)))

    根据整型生成用例名称:
    def process_int(para_name):
        print('用例名称: %s 参数为字符串' % para_name)

    根据时间类型生成用例名称:
    def process_date(para_name):
        print('用例名称: %s 参数为字符串' % para_name)

    根据浮点型生成用例名称:
    def process_float(para_name):
        print('用例名称: %s 参数为字符串' % para_name)
        print('用例名称: %s 参数为整型' % para_name)
        print('用例名称: %s 参数浮点型' % para_name)

    根据单个参数生成用例名称:
    def genera_para(para_list):
        para_name = para_list[0]
        para_type = para_list[1]
        para_min = para_list[2]
        para_max = para_list[3]
        para_required = para_list[4]
        para_choice = para_list[5]
        para_array = para_list[6]
        para_format = para_list[7]
        if para_format:
            print('用例名称: %s 参数 %s 不正确' % (para_name, para_format))
            print('用例名称: %s 参数不填' % para_name)
        if para_choice:
            for x in para_choice.split(','):
                print('用例名称: %s 参数值为 %s' % (para_name, x))
            print('用例名称: %s 参数值不在可选项中' % para_name)
        elif para_type == 'string':
            process_str(para_name, para_min, para_max)
        elif para_type == 'int':
            process_int(para_name)
        elif para_type == 'long':
            pass
        elif para_type == 'float':
            process_float(para_name)
        elif para_type == 'date':
            process_date(para_name)
        if para_array == 'yes':
            print('用例名称: %s 参数为两个' % para_name)

    根据所有的参数生成用例:
    def generation(list_case):
        for casein list_case:
            genera_para(case)

    把以上代码放到同一个文件中,然后加上generation(case_list) 这一句,就可以执行了。执行完成之后,可以生成以下的用例:
    用例名称: name 参数不填
    用例名称: name 参数长度为 5
    用例名称: name 参数长度为 31
    用例名称: name 参数长度为 6
    用例名称: name 参数长度为 30
    用例名称: sex 参数不填
    用例名称: sex 参数值为 1
    用例名称: sex 参数值为 2
    用例名称: sex 参数值不在可选项中
    用例名称: sex 参数为两个
    用例名称: age 参数不填
    用例名称: age 参数为字符串
    用例名称: email 参数 邮箱格式 不正确
    用例名称: email 参数不填
    用例名称: email 参数长度为 5
    用例名称: email 参数长度为 251
    用例名称: email 参数长度为 6
    用例名称: email 参数长度为 250
    用例名称: mark 参数不填
    用例名称: mark 参数长度为 3
    用例名称: mark 参数长度为 31
    用例名称: mark 参数长度为 4
    用例名称: mark 参数长度为 30
    用例名称: mobile 参数 手机格式 不正确
    用例名称: mobile 参数不填
    用例名称: mobile 参数长度为 10
    用例名称: mobile 参数长度为 12
    用例名称: mobile 参数长度为 11
    用例名称: birth 参数 日期格式 不正确
    用例名称: birth 参数不填
    用例名称: birth 参数为字符串

    当然这只是一个简单的生成用例模型,也并不复杂,更没有用到任何的算法,我们也还可以对此进行更多的自动化的操作,比如自动生成测试用例的数据。如果有自己做接口平台的同学,接口多的情况下可以试试这种方法。有兴趣的同学可以留言交流。

    相关文章

      网友评论

        本文标题:通过python自动生成接口测试用例

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