HttpRunner 源码学习

使用最新版本的开发版本,从github仓库获取:

pip install git+https://github.com/HttpRunner/HttpRunner.git#egg=HttpRunner

 

源码阅读入口:setup.py文件

entry_points中,httprunner或者hrun命令会进入到cli.py文件中httprunner.cli:main_hrun方法。

 

部分方法介绍

cli:main_hrun  会根据命令后面跟的一些条件,执行不同方法,执行方法是api.py中的runner.run()。

HttpRunner 源码学习_第1张图片

此run()方法:

1、validator.py文件中校验跟在hrun命令后的是用例路径还是用例内容dict。

2、hrun 后面可以直接跟用例list[dict],也可以跟用例路径。

3、如果跟的是用例路径,会调用loader.py中loader_tests()方法获取所有用例。

4、然后调用api.py中_run_tests()方法执行用例。

 loader.py loader_tests()方法:

1、先看传入参数是否是路径列表、目录、绝对路径,分别处理。

2、如果是单个文件路径,调*load_file()加载文件,根据后缀json或者yaml调用不同加载方式。

loader.py中有个_check_format()方法 简单校验文件内容是否为空是否为list/dict类型。

*load_project_tests():加载项目信息,返回project_mapping

load_env:加载evn环境变量内容,以dict方式存储变量名和值。

load_debugtalk(load_python_module(module)):将debugtalk.py中functions和variables都以字典方式存储下来,存到debugtalk_module字典中。

load_api_folder: 加载api文件夹内容。

load_test_folder:加载suite文件夹内容。

返回project_mapping

HttpRunner 源码学习_第2张图片

*_load_testcase():加载用例信息。会用到loaded_testcase字典。

_load_teststeps(),从project_mapping中加载进对应的api和suite。

return teststeps

返回单个用例信息:

HttpRunner 源码学习_第3张图片

api.py中_run_tests()方法:

  • *parser.py文件中parse_tests()方法,根据evn/debugtakl等配置文件替换变量那些。函数:${func_name(x,xx)},变量: $mobile

  • *_add_tests()方法

  • *_run_suite()方法

  • *_aggregate()方法。

调试方法

1、需要先了解python中argparse库,解析命令行参数。

2、main_debug.py是调试文件入口。edit configurations-加入script parameters.

HttpRunner 源码学习_第4张图片

HttpRunner 源码学习_第5张图片

源码结构图

HttpRunner 源码学习_第6张图片

你可能感兴趣的:(httprunner)