当前位置:   article > 正文

har2case源码解读

har2case

1、下载har2case源码

地址:https://github.com/HttpRunner/har2case

2、目录结构

har2case:程序文件

test:测试文件

data:测试所需的har文件存放路径

test_har:测试har文件

test_utils:测试utils文件

main:主入口

setup:版本发布的文件(看不懂)

3、har2case主要文件内容

cli.py封装的命令

compat.py 是用于py2和py3的模块处理

core.py 主要的har文件内容读取后的转换

utils.py 用于基本的外部公共的封装

4、摸索着解读

utils.py

  1. # 加载HAR文件并返回日志条目列表
  2. def load_har_log_entries(file_path):
  3.     with io.open(file_path, "r+", encoding="utf-8-sig") as f:
  4. try:
  5. content_json = json.loads(f.read())
  6. return content_json["log"]["entries"]
  7. except (KeyError, TypeError):
  8. logging.error("HAR file content error: {}".format(file_path))
  9. sys.exit(1)

读取har文件,并且将content_json["log"]["entries"]内容返一个list,及为har中的如下部分内容:

通过utils.py 将list转成字典类型,便于后续的处理

dump_yaml与dump_json 用于生成转换后的yaml文件或者json文件

在core.py中获取列表中request中的值,可以获取url

对应yaml文件中的testname部分

修改teststep_dict["name"]中的name可以改变yaml文件中的名称【如果你需要修改的情况】

下面代码分别是获取请求方式method、请求头内容headers、请求参数data

其中headers中的部分是通过这个list中进行过滤,在core.py开头

强制将大写转成小写,字母并匹配后过滤掉不需要的请求头的内容;如果不需要请自己加到IGNORE_REQUEST_HEADERS中,建议小写避免不必要的麻烦。

其中validate中是yaml文件断言部分,其中很多知识点:

  1. if not 的用法

  1. isinstance()函数的用法

  1. startswith()函数的用法

将返回的内容因为时base64加密的,所以返回内容通过base64的方法进行解密。

你会发现解密的断言内容validate内容与实际f12中看到的内容不一致,缺少了很多尤其在响应内容的json数据存在嵌套时,嵌套的数据不会被放入断言中。

将此处代码注释掉就会拿到base64解密后的所有响应内容

5、结尾

菜鸟一个尝试解读源码内容,欢迎指导

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/609096
推荐阅读
相关标签
  

闽ICP备14008679号