python自動(dòng)化測(cè)試用例全對(duì)偶組合與全覆蓋組合比較
python3用到2個(gè)庫(kù)
import itertools
import metacomm.combinatorics.all_pairs2 as all_pairs
all_pairs 這個(gè)庫(kù)適用于python2.7 安裝好 里面有語(yǔ)法需要更新才能在python3中用
test = """{
"a": [{"a": "string"}],
"b": ["string"],
"c": "string",
"d": "bool",
"e": "int",
"f": {"ff": "string", "gg": "int"}
}"""
覆蓋測(cè)試
同樣 設(shè)定 范圍值,每一種參數(shù)有幾個(gè)取值范圍,進(jìn)行覆蓋測(cè)試
1對(duì)偶算法覆蓋
2全覆蓋(笛卡爾積算法)
def get_data_list(_type, request_type=0):
"""
0表示對(duì)偶算法;1表示全匹配組合
返回參數(shù)的取值范圍
"""
if _type == 'string':
return ["", None, "abc123"]
elif _type == 'time':
return ["1900-01-01", time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())]
elif _type == 'int':
return [-1, 0, 1]
elif _type == 'decimal':
return [-0.50, 0.0, 0.50]
elif _type == 'bool':
return [True, False]
elif isinstance(_type, dict):
if request_type == 0:
return dual_test_case(_type)
elif request_type == 1:
return itertools_case_list(_type)
elif isinstance(_type, list):
new_list = []
c_list = []
if isinstance(_type[0], dict): # 字典集合,遞歸取得自己的取值范圍
if request_type == 0:
c_list = dual_test_case(_type[0]) # 對(duì)偶算法
elif request_type == 1:
c_list = itertools_case_list(_type[0]) # 全匹配算法
for case in c_list:
new_list.append([case])
else: # 數(shù)組集合
v_list = get_data_list(_type[0])
for case in v_list:
new_list.append([case])
new_list.append(v_list) # 補(bǔ)全一下多個(gè)值的數(shù)組
return new_list
def all_assemble(dic):
"""返回每個(gè)參數(shù)的取值范圍組成的二維數(shù)據(jù),用于求笛卡爾積"""
return_list = []
for k, v in dic.items():
k_list = []
for _value in get_data_list(v, 1):
di = {}
di[k] = _value
k_list.append(di)
return_list.append(k_list)
return return_list
def itertools_case_list(dic):
"""笛卡爾積"""
_list = all_assemble(dic)
case_list = []
for item in itertools.product(*_list):
d3 = {}
for di in item:
d3.update(di)
case_list.append(d3)
return case_list
def dual_test_case(_base):
"""對(duì)偶生成測(cè)試用例"""
if not isinstance(_base, dict):
return []
key_list = list()
value_list = list()
case_list = list()
for k, v in _base.items():
key_list.append(k)
value_list.append(get_data_list(v))
# print(key_list, value_list)
if value_list.__len__() >= 2:
res = all_pairs.all_pairs2(value_list)
for i, b in enumerate(res):
# print i, b
dic = dict()
for n in range(b.__len__()):
dic[key_list[n]] = b[n]
case_list.append(dic)
else:
for v in value_list[0]:
dic = dict()
dic[key_list[0]] = v
case_list.append(dic)
return case_list測(cè)試生成
case_list1 = dual_test_case(json.loads(test))
print(case_list1.__len__())
for case in case_list1:
print(str(json.dumps(case)))
case_list2 = itertools_case_list(json.loads(test))
print(case_list2.__len__())
for case in case_list2:
print(str(json.dumps(case)))對(duì)偶算法生成用例39條

全覆蓋生成用例1944條

以上就是python自動(dòng)化測(cè)試用例全對(duì)偶組合與全覆蓋組合比較的詳細(xì)內(nèi)容,更多關(guān)于python全對(duì)偶全覆蓋組合測(cè)試的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
- python自動(dòng)化測(cè)試工具Helium使用示例
- Python?pytest自動(dòng)化測(cè)試庫(kù)十個(gè)強(qiáng)大用法示例
- python自動(dòng)化測(cè)試Data?Driven?Testing(DDT)用例解析
- Python UI自動(dòng)化測(cè)試Web frame及多窗口切換
- python自動(dòng)化測(cè)試中APScheduler?Flask的應(yīng)用示例
- python自動(dòng)化測(cè)試通過(guò)日志3分鐘定位bug
- python自動(dòng)化測(cè)試selenium屏幕截圖示例
- python自動(dòng)化測(cè)試selenium定位frame及iframe示例
- python?Helium自動(dòng)化庫(kù)的功能特性探索
相關(guān)文章
解決python中顯示圖片的plt.imshow plt.show()內(nèi)存泄漏問題
這篇文章主要介紹了解決python中顯示圖片的plt.imshow plt.show()內(nèi)存泄漏問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-04-04
利用Python和C語(yǔ)言分別實(shí)現(xiàn)哈夫曼編碼
這篇文章主要為大家詳細(xì)介紹了如何利用Python和C語(yǔ)言分別實(shí)現(xiàn)哈夫曼編碼,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2022-07-07
Python數(shù)據(jù)可視化實(shí)現(xiàn)多種圖例代碼詳解
這篇文章主要介紹了Python數(shù)據(jù)可視化實(shí)現(xiàn)多種圖例代碼詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-07-07
Python獲取好友地區(qū)分布及好友性別分布情況代碼詳解
利用Python + wxpy 可以快速的查詢自己好友的地區(qū)分布情況,以及好友的性別分布數(shù)量。還可以批量下載好友的頭像,拼接成大圖。感興趣的朋友跟隨小編一起看看吧2019-07-07
手把手帶你了解Python數(shù)據(jù)分析--matplotlib
這篇文章主要介紹了Python實(shí)現(xiàn)matplotlib顯示中文的方法,結(jié)合實(shí)例形式詳細(xì)總結(jié)分析了Python使用matplotlib庫(kù)繪圖時(shí)顯示中文的相關(guān)操作技巧與注意事項(xiàng),需要的朋友可以參考下2021-08-08
python pytesseract庫(kù)的實(shí)例用法
在本篇文章里小編給大家整理的是一篇關(guān)于python pytesseract庫(kù)的實(shí)例用法,有需要的朋友們可以學(xué)習(xí)參考下。2021-07-07
Python爬取新型冠狀病毒“謠言”新聞進(jìn)行數(shù)據(jù)分析
這篇文章主要介紹了Python爬取新型冠狀病毒“謠言”新聞進(jìn)行數(shù)據(jù)分析,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-02-02

