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 安裝好 里面有語法需要更新才能在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è)試通過日志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ì)大家有所幫助。一起跟隨小編過來看看吧2020-04-04利用Python和C語言分別實(shí)現(xiàn)哈夫曼編碼
這篇文章主要為大家詳細(xì)介紹了如何利用Python和C語言分別實(shí)現(xiàn)哈夫曼編碼,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2022-07-07Python數(shù)據(jù)可視化實(shí)現(xiàn)多種圖例代碼詳解
這篇文章主要介紹了Python數(shù)據(jù)可視化實(shí)現(xiàn)多種圖例代碼詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-07-07Python獲取好友地區(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-08python pytesseract庫(kù)的實(shí)例用法
在本篇文章里小編給大家整理的是一篇關(guān)于python pytesseract庫(kù)的實(shí)例用法,有需要的朋友們可以學(xué)習(xí)參考下。2021-07-07Python爬取新型冠狀病毒“謠言”新聞進(jìn)行數(shù)據(jù)分析
這篇文章主要介紹了Python爬取新型冠狀病毒“謠言”新聞進(jìn)行數(shù)據(jù)分析,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-02-02