以前做接口自动化测试时,有想过如何批量生成接口测试用例,研究了一下,实现了一个简单模型。
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 参数为字符串
当然这只是一个简单的生成用例模型,也并不复杂,更没有用到任何的算法,我们也还可以对此进行更多的自动化的操作,比如自动生成测试用例的数据。如果有自己做接口平台的同学,接口多的情况下可以试试这种方法。有兴趣的同学可以留言交流。