har2case源码解读

har2case源码解读_第1张图片

1、下载har2case源码

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

2、目录结构

har2case源码解读_第2张图片

har2case:程序文件

test:测试文件

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

test_har:测试har文件

test_utils:测试utils文件

main:主入口

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

3、har2case主要文件内容

cli.py封装的命令

har2case源码解读_第3张图片

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

har2case源码解读_第4张图片

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

har2case源码解读_第5张图片

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

har2case源码解读_第6张图片

4、摸索着解读

utils.py

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

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

har2case源码解读_第7张图片

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

har2case源码解读_第8张图片

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

har2case源码解读_第9张图片

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

har2case源码解读_第10张图片

对应yaml文件中的testname部分

har2case源码解读_第11张图片

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

har2case源码解读_第12张图片

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

har2case源码解读_第13张图片

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

har2case源码解读_第14张图片

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

har2case源码解读_第15张图片

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

  1. if not 的用法

  1. isinstance()函数的用法

  1. startswith()函数的用法

har2case源码解读_第16张图片

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

har2case源码解读_第17张图片

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

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

har2case源码解读_第18张图片

5、结尾

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

你可能感兴趣的:(python,mac,linux,python,pip,pytest)