unittest框架二次开发,批量收集html文件中的case

收集case

def get_total_cases(filename):
    """
    解析用例配置文件
    :param filename: 用例集配置文件路径
    :return: 返回suite测试用例集
    """
    with open(filename, 'r', encoding='utf-8') as f:
        content = " ".join([r.rstrip() for r in f])
    html_code = etree.HTML(content, etree.HTMLParser())
    org_str = "//div[@class='testcase']/div"
    path_list = html_code.xpath(org_str)
    case_lists = {}
    for index in range(1, len(path_list) + 1):
        search_str = org_str + f"{[index]}/file"
        file_list = html_code.xpath(search_str)
        for child_index in range(1, len(file_list) + 1):
            case_path = 'testcase.' + path_list[index - 1].attrib['class'] + "." + file_list[child_index - 1].attrib[
                'class']
            child_search_str = search_str + f"{[child_index]}/test_case/@name"
            case_list = html_code.xpath(child_search_str)
            case_lists[case_path] = case_list
    return case_lists

添加case到suites中

def add_case_to_suites(case_dic: dict):
    """
    添加测试用到unittest suite
    :param case_dic:  用来集的字典
    :return:
    """
    suites = unittest.TestSuite()
    for key, value in case_dic.items():
        if value:
            path = ".".join(key.split('.')[:-1])
            class_demo = key.split('.')[-1]
            params = import_module(path)
            getattr_result = getattr(params, class_demo)
            for test_case in value:
                suites.addTest(getattr_result(test_case))
    return suites

执行case

case_lists = get_total_cases(case_path)
suite = add_case_to_suites(case_lists)
runner = TestRunner(suite, filename="test_config", templates=2)
runner.run()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值