HttpRunner3源码分析(1) - cli.py

本文详细介绍了HttpRunner3的入口文件`cli.py`,包括命令行解析、测试文件转换等功能。重点讲解了如何将json和yaml格式的测试用例转化为可执行文件,并探讨了源码中的优点和技巧,如统一导入路径、文件路径处理和数据类型验证。

HttpRunner3和2的区别挺大,3的底层使用pytest,2的底层是unittest.

在兼容json和yaml格式测试用例的前提下,作者更鼓励使用写代码来接入.

在这里插入图片描述

具体可以看这篇文章分析对比


入口文件cli.py

概要导图:

在这里插入图片描述

详解

命令行驱动的库很容易找到入口地址. 在这个文件内,主要有以下方法:

  • main(), 使用argparse接收用户输入的命令,决定走哪个方法,关键代码
    输入httprunner后,接下来的单词:
    if sys.argv[1] == "run":
        sys.exit(main_run(extra_args))
    elif sys.argv[1] == "startproject":
        main_scaffold(args)
    elif sys.argv[1] == "har2case":
        main_har2case(args)
    elif sys.argv[1] == "make":
        main_make(args.te
File "<frozen runpy>", line 198, in _run_module_as_main File "<frozen runpy>", line 88, in _run_code File "D:\Python\Scripts\httprunner.exe\__main__.py", line 4, in <module> from httprunner.cli import main File "D:\Python\Lib\site-packages\httprunner\__init__.py", line 5, in <module> from httprunner.config import Config File "D:\Python\Lib\site-packages\httprunner\config.py", line 5, in <module> from httprunner.models import TConfig, TConfigThrift, TConfigDB, ProtoType, VariablesMapping File "D:\Python\Lib\site-packages\httprunner\models.py", line 260, in <module> StepResult.update_forward_refs() ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^ File "D:\Python\Lib\site-packages\pydantic\main.py", line 832, in update_forward_refs update_field_forward_refs(f, globalns=globalns, localns=localns) ~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\Python\Lib\site-packages\pydantic\typing.py", line 386, in update_field_forward_refs update_field_forward_refs(sub_f, globalns=globalns, localns=localns) ~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\Python\Lib\site-packages\pydantic\typing.py", line 382, in update_field_forward_refs field.type_ = evaluate_forwardref(field.type_, globalns, localns or None) ~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\Python\Lib\site-packages\pydantic\typing.py", line 70, in evaluate_forwardref return cast(Any, type_)._evaluate(globalns, localns, set()) ~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^ TypeError: ForwardRef._evaluate() missing 1 required keyword-only argument: &#39;recursive_guard&#39;
最新发布
08-10
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值