• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

har2case源码解读

武飞扬头像
寻找bug测试有责
帮助1

学新通

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、结尾

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

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhggahjg
系列文章
更多 icon
同类精品
更多 icon
继续加载