文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

python全对偶组合与全覆盖组合比较实例分析

2023-07-02 08:40

关注

这篇“python全对偶组合与全覆盖组合比较实例分析”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“python全对偶组合与全覆盖组合比较实例分析”文章吧。

python3用到2个库

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_listdef 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_listdef 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_listdef 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条

python全对偶组合与全覆盖组合比较实例分析

全覆盖生成用例1944条

python全对偶组合与全覆盖组合比较实例分析

以上就是关于“python全对偶组合与全覆盖组合比较实例分析”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注编程网行业资讯频道。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯