《HttpRunner源码阅读》【未完-待更新】

2020-12-26 17:28

阅读:536

标签:exclude   process   不同的   接口自动化测试   xtend   conf   enc   线程   str   

HttpRunner

  • 源码地址:https://github.com/httprunner/httprunner
  • 当前版本:3.1.4
  • 功能介绍:接口自动化测试(支持输入.har文件、支持输出json/yaml文件)、性能测试框架
  • 底层使用:request、jinja2、pytest、locust
  • 使用人员:测试开发人员、自动化测试人员
  • 阅读时间:2020/10/24~待填入
  • 阅读目的:
    1.使用该框架到工作中:自动化测试
    2.改造框架:让其能根据测试用例自动生成测试代码,降低编写自动化测试脚本成本

httprunner/httprunner目录

util.py 公共工具模块封装

init_sentry_sdk                 # sentry_sdk库,初始化错误日志监控
set_os_environ                  # 增加系统环境变量 os.environ
unset_os_environ                # 删除系统环境变量 os.environ
get_os_environ                  # 查询系统环境变量的值 os.en
lower_dict_keys                 # 将字段里的keys转换成小写
print_info                      # 美化打印dict对象
omit_long_data                  # 超出固定字符省略,str/bytes
get_platform                    # 获取程序信息
sort_dict_by_custom_order       # 根据一定的顺序排序dict,使用sorted来处理
ExtendJSONEncoder               # ==待补充==
merge_variables                 # 两个dict,第一的dict的k-v会替换第二个dict的k-v,触发了if则不替换
is_support_multiprocessing      # 用Queue来处理多线程
gen_cartesian_product           # 生成笛卡尔积List[Dict]
cli.py 命令行模块

init_parser_run(subparsers)     # 对run命令初始化解析
main_run(extra_args)            # run命令的主函数
main()                          # 主程序入口,对一级命令 [httprunner]和二级命令[startproject,run,har2case,make]的处理
main_hrun_alias()               # hrun命令别名主函数
main_make_alias()               # make命令别名主函数
main_har2case_alias()           # har2case命令别名主函数
compat.py 兼容性问题处理模块:v2和v3之间的测试用例格式、其他兼容性问题

ensure_path_sep()               # 处理文件路径的Windows和linux的兼容性问题;使用内置包os.sep.join方法,根据所在的系统,自动使用分割符
ext/har2case/__init__.py har2case包初始化

init_har2case_parser(subparsers)            # har2case命令行参数设置;return parser
main_har2case(args)                         # har2case命令主函数入口;会调用./core.py模块的gen_testcase(output_file_type)函数
ext/har2case/core.py har2case测试用例文件生成模块:将.har文件转成各种不同的文件格式

ensure_file_path(path)                  # 判断path的合法性:不能为空、后缀是.har、;会调用httprunner/compat.py/ensure_path_sep()函数
HarParser.__init__(...)                 # 初始化方法;初始化参数har_file_path、filter_str、exclude_str-》 会调用ensure_file_path()函数处理har_file_path
HarParser.gen_testcase(file_type)       # HarParser类给外部生成用例的方法,会生成测试用例文件;会调用self._make_testcase()方法-》得到的返回信息传给./utils.py/dump_json-》得到测试用例文件
HarParser._make_testcase()              # 从.har文件里提取测试用例需要的信息;会调用self._prepare_config()方法、self._prepare_teststeps()方法-》得到testcase
HarParser._prepare_config()             # 测试用例的config配置块
HarParser._prepare_teststeps()          # 测试用例的teststeps列表;会调用./utils.py/load_har_log_entries(self.har_file_path)-》遍历返回数据,根据命令行输入的--filter和--exclude参数值过滤url-》调用_prepare_teststep()方法,将返回信息放进的teststeps列表
HarParser._prepare_teststep(entry_json) # 将输入的entry_json进行解析得到teststep信息;会调用__make_request_url()...将获取的数据存进teststep_dict
ext/har2case/utils.py har2case工具模块

dump_yaml()                             # 将.har文件序列化成.yaml格式文件;使用第三方包的yaml.dump()
dump_json()                             # 将.har文件序列化成.json格式文件;使用第三方包的json.dumps()
load_har_log_entries(file_path)         # 解析.har文件,过滤后只留下log.entries的value

《HttpRunner源码阅读》【未完-待更新】

标签:exclude   process   不同的   接口自动化测试   xtend   conf   enc   线程   str   

原文地址:https://www.cnblogs.com/1fengchen1/p/13899952.html


评论


亲,登录后才可以留言!