<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
import itertools
import metacomm.combinatorics.all_pairs2 as all_pairs
all_pairs 這個庫適用於python2.7 安裝好 裡面有語法需要更新才能在python3中用
test = """{ "a": [{"a": "string"}], "b": ["string"], "c": "string", "d": "bool", "e": "int", "f": {"ff": "string", "gg": "int"} }"""
同樣 設定 範圍值,每一種引數有幾個取值範圍,進行覆蓋測試
1對偶演演算法覆蓋
2全覆蓋(笛卡爾積演演算法)
def get_data_list(_type, request_type=0): """ 0表示對偶演演算法;1表示全匹配組合 返回引數的取值範圍 """ 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]) # 對偶演演算法 elif request_type == 1: c_list = itertools_case_list(_type[0]) # 全匹配演演算法 for case in c_list: new_list.append([case]) else: # 陣列集合 v_list = get_data_list(_type[0]) for case in v_list: new_list.append([case]) new_list.append(v_list) # 補全一下多個值的陣列 return new_list def all_assemble(dic): """返回每個引數的取值範圍組成的二維資料,用於求笛卡爾積""" 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): """對偶生成測試用例""" 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
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)))
對偶演演算法生成用例39條
全覆蓋生成用例1944條
以上就是python自動化測試用例全對偶組合與全覆蓋組合比較的詳細內容,更多關於python全對偶全覆蓋組合測試的資料請關注it145.com其它相關文章!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45