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

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

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自动生成接口测试用例)