通过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 参数为字符串

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

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,937评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,503评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,712评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,668评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,677评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,601评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,975评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,637评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,881评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,621评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,710评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,387评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,971评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,947评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,189评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,805评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,449评论 2 342

推荐阅读更多精彩内容