HttpRunner3.x 源码解析(2)-main_run执行用例

命令入口

当在终端运行输入httprunner run 目录或者文件名,则会调用main_run函数,并传入目录/文件名来执行测试用例。

main_run(extra_args)

 main_run

对于extra_args中的值,如果在os.path.exists不存在,则将其加入extra_args_new中。

如果存在,则将其加入用例列表  tests_path_list

def main_run(extra_args) -> enum.IntEnum:
    ga_client.track_event("RunAPITests", "hrun")
    # keep compatibility with v2
    extra_args = ensure_cli_args(extra_args)

    tests_path_list = []
    extra_args_new = []
    for item in extra_args:
        if not os.path.exists(item):
            # item is not file/folder path
            extra_args_new.append(item)
        else:
            # item is file/folder path
            tests_path_list.append(item)#用例文件列表

    if len(tests_path_list) == 0:
        # has not specified any testcase path
        logger.error(f"No valid testcase path in cli arguments: {extra_args}")
        sys.exit(1)

    testcase_path_list = main_make(tests_path_list)#转换测试用例文件格式
    if not testcase_path_list: #未转换成功则打印未找到有效用例
        logger.error("No valid testcases found, exit 1.")
        sys.exit(1)

    if "--tb=short" not in extra_args_new:#什么意思
        extra_args_new.append("--tb=short")

    extra_args_new.extend(testcase_path_list) #列表插入列表
    logger.info(f"start to run tests with pytest. HttpRunner version: {__version__}")
    # print("extra_args_new")
    # print(extra_args_new) ['--tb=short', 'D:\\Project\\demo\\testcases\\demo_testcase_ref_test.py']
    return pytest.main(extra_args_new) #调用pytest执行用例

1)如果列表  tests_path_list长度为0,说明用例文件不存在,则输出没有有效用例。

如文件名给错或者目录错误 

 2) 如果tests_path_list长度大于0(可能是文件列表/目录名),则调用main_make转换用例为py文件,并返testcase_path_list

如果testcase_path_list不存在,则异常退出sys.exit(1)

如果存在,则将其加入extra_args_new。可以看到还给extra_args_new加了一个参数--tb=short

这个是pytest的参数,用来输出详细报错信息。

在return中调用了pytest.main执行测试用例。

由此可见,httprunner最终是调用了pytest执行的用例。

小技巧

看源码时,学习到的一些知识可以化为自己的知识。

os.path.exists 校验目录/文件是否存在

sys.exit(1) 程序异常退出

extra_args_new.extend(testcase_path_list)#列表插入列表
 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值