我在網(wǎng)上查找了下接口測試相關(guān)的資料,大都重點是以數(shù)據(jù)驅(qū)動的形式,將用例維護在文本或表格中,而沒有說明怎么樣去生成想要的用例,
問題:
測試接口時,比如參數(shù)a,b,c,我要先測a參數(shù),有(不傳,為空,整形,浮點,字符串,object,過短,超長,sql注入)這些情況,其中一種情況就是一條用例,同時要保證b,c的正確,確保a的測試不受b,c參數(shù)的錯誤影響
解決思路:
符合接口規(guī)范的參數(shù)可以手動去填寫,或者準備在代碼庫中。那些不符合規(guī)范的參數(shù)(不傳,為空,整形,浮點,字符串,object,過短,超長,sql注入)也可以準備在庫中作為常量反復(fù)使用
主要實現(xiàn)的功能點:
1.api參數(shù)整理到dict中,方便組合參數(shù)生成用例
2.對生成的用例進行循環(huán)執(zhí)行
3.封裝些許代碼便于使用和維護
源碼分析:
canshuxinxi.py文件用來存放api接口信息。以dict形式存放,這樣就可以API_ALL['登錄接口'][url]這種方式去取,看起來較直觀,知道取得是哪個接口的那部分信息。
#!/usr/bin/env python# -*- coding: utf-8 -*-# @Time  : 2017-06-09 14:09# canshuxinxi.py# 接口信息API_ALL = {      '登錄接口': {              'number': '1',              'url': 'http://www.baidu.com',              'leixing': 'post',              'head': {                    'aa': 'bb',                    'cc': 'dd',                    },              'canshu': {                    'username': 'Wbfxs001',                    'password': '111111Qq',                    'grant_type': 'password',                  },              'qiwang': {                    'code': 200,                    'name': 'Wbfxs001',                    },            },      '退出接口': {              'number': '1',              'url': 'http://www.baidu.com',              'leixing': 'get',              'canshu': {                    'username': 'Wbfxs001',                    'password': '111111Qq',                    'grant_type': 'password',                   }      }}changliang.py文件用來存非常規(guī)(可能會讓接口響應(yīng)異常)參數(shù),同理也是存放在dict中,方便維護,比如以后要加新的sql注入代碼段,可以直接在后面添加
#!/usr/bin/env python# -*- coding: utf-8 -*-# @Time  : 2017-06-09 14:09# changliang.py# 常用參數(shù)不傳,為空,整形,浮點,字符串,object,過短,超長,sql注入objects1 = 'xxxx'objects2 = 'ssss'ZHCS = {      '為空': [''],      '整形': [10, 23, 44, 88, 99],      '浮點': [1.11, 2.342, -1.03],      '字符串': ['aaaa', 'bbbb', 'cccc','dddd'],      'object': [objects1, objects2],      '過短': ['1', '0'],      '超長': ['11111111111111111111111111111111111111111111111'],      'sql注入': [';and 1=1 ;and 1=2', ";and (select count(*) from sysobjects)>0 mssql", ";and 1=(select IS_SRVROLEMEMBER('sysadmin'));--"],     }            
新聞熱點
疑難解答