最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python自動(dòng)化測試用例全對偶組合與全覆蓋組合比較

 更新時(shí)間:2022年06月09日 16:26:39   作者:二到不知處  
這篇文章主要為大家介紹了python自動(dòng)化測試用例全對偶組合與全覆蓋組合比較,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

python3用到2個(gè)庫

import itertools
import metacomm.combinatorics.all_pairs2 as all_pairs

 all_pairs 這個(gè)庫適用于python2.7 安裝好 里面有語法需要更新才能在python3中用

test = """{
    "a": [{"a": "string"}],
    "b": ["string"],
    "c": "string",
    "d": "bool",
    "e": "int",
    "f": {"ff": "string", "gg": "int"}
}"""

覆蓋測試

同樣 設(shè)定 范圍值,每一種參數(shù)有幾個(gè)取值范圍,進(jìn)行覆蓋測試

1對偶算法覆蓋

2全覆蓋(笛卡爾積算法)

def get_data_list(_type, request_type=0):
    """
    0表示對偶算法;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])  # 對偶算法
            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):
    """對偶生成測試用例"""
    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自動(dòng)化測試用例全對偶組合與全覆蓋組合比較的詳細(xì)內(nèi)容,更多關(guān)于python全對偶全覆蓋組合測試的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Python生成器之yield詳解

    Python生成器之yield詳解

    這篇文章主要介紹了Python生成器yield,yield除了作為生成器的標(biāo)志以外,還有一個(gè)「返回值」的功能,我們知道return也有這個(gè)功能,那么它跟return的這個(gè)返回值有什么區(qū)別呢,本文將詳細(xì)的介紹yield,需要的朋友可以參考下
    2023-05-05
  • python提取log文件內(nèi)容并畫出圖表

    python提取log文件內(nèi)容并畫出圖表

    這篇文章主要介紹了python提取log文件內(nèi)容并畫出圖表,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-07-07
  • Python中的Classes和Metaclasses詳解

    Python中的Classes和Metaclasses詳解

    這篇文章主要介紹了Python中的Classes和Metaclasses詳解,屬于基礎(chǔ)知識中類與對象的概念部分的深入,需要的朋友可以參考下
    2015-04-04
  • Python 使用list和tuple+條件判斷詳解

    Python 使用list和tuple+條件判斷詳解

    這篇文章主要介紹了Python 使用list和tuple+條件判斷詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-07-07
  • Python?asyncore?socket客戶端開發(fā)基本使用教程

    Python?asyncore?socket客戶端開發(fā)基本使用教程

    asyncore庫是python的一個(gè)標(biāo)準(zhǔn)庫,提供了以異步的方式寫入套接字服務(wù)的客戶端和服務(wù)器的基礎(chǔ)結(jié)構(gòu),這篇文章主要介紹了Python?asyncore?socket客戶端開發(fā)基本使用,需要的朋友可以參考下
    2022-12-12
  • python制作抖音代碼舞

    python制作抖音代碼舞

    這篇文章主要為大家詳細(xì)介紹了python制作抖音代碼舞的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-04-04
  • Python中不同進(jìn)制互相轉(zhuǎn)換(二進(jìn)制、八進(jìn)制、十進(jìn)制和十六進(jìn)制)

    Python中不同進(jìn)制互相轉(zhuǎn)換(二進(jìn)制、八進(jìn)制、十進(jìn)制和十六進(jìn)制)

    這篇文章主要介紹了Python中不同進(jìn)制互相轉(zhuǎn)換,本文講解了二進(jìn)制、八進(jìn)制、十進(jìn)制和十六進(jìn)制的相與轉(zhuǎn)換實(shí)現(xiàn)代碼,需要的朋友可以參考下
    2015-04-04
  • 使用python實(shí)現(xiàn)無需驗(yàn)證碼免登錄12306搶票功能

    使用python實(shí)現(xiàn)無需驗(yàn)證碼免登錄12306搶票功能

    隨著科技的發(fā)展,越來越多的人選擇通過網(wǎng)絡(luò)購買火車票,而12306作為中國鐵路客戶服務(wù)中心的官方網(wǎng)站,成為了人們購票的首選平臺,然而,在春運(yùn)、暑運(yùn)等高峰期,由于車票緊張,搶票成為了一項(xiàng)具有挑戰(zhàn)性的任務(wù),下面,我們將詳細(xì)介紹如何使用python實(shí)現(xiàn)無需驗(yàn)證碼免登錄12306搶票
    2025-01-01
  • Python如何判斷字符串是否僅包含數(shù)字

    Python如何判斷字符串是否僅包含數(shù)字

    在用Python進(jìn)行數(shù)據(jù)處理的時(shí)候,經(jīng)常會遇到DataFrame中的某一列本應(yīng)該是數(shù)值類型,但由于數(shù)據(jù)不規(guī)范導(dǎo)致在字段中夾雜了非數(shù)值類型,本文就介紹了Python如何判斷字符串是否僅包含數(shù)字,感興趣的可以了解一下
    2022-03-03
  • Python封裝SNMP調(diào)用接口的示例代碼

    Python封裝SNMP調(diào)用接口的示例代碼

    PySNMP?是一個(gè)純粹用Python實(shí)現(xiàn)的SNMP,用PySNMP的最抽象的API為One-line?Applications。本文為大家分享了Python封裝SNMP調(diào)用接口的示例代碼,需要的可以參考一下
    2022-07-07

最新評論

屏东县| 尤溪县| 华宁县| 车致| 吴忠市| 威宁| 吕梁市| 简阳市| 枣阳市| 炎陵县| 旌德县| 莫力| 中宁县| 延长县| 突泉县| 麻城市| 嵩明县| 丘北县| 海城市| 霍林郭勒市| 渝中区| 乐亭县| 南投市| 瑞昌市| 高陵县| 西宁市| 靖边县| 城固县| 石首市| 马龙县| 宜章县| 屏东市| 垫江县| 宣威市| 荣成市| 微山县| 珲春市| 龙泉市| 平罗县| 平舆县| 沂源县|