天天看点

httprunner框架历程介绍(二)

四.接口测试外的其他功能

四.har2case

作用:将har文件转化成yml或者json文件,具体使用方法可以看下har2case -h的罗列

指定目标文件会生成yml文件

har2case tests/data/demo.har demo.yml

不指定目标会生成json文件

har2case tests/data/demo.har

参考:

https://debugtalk.com/post/HttpRunner-supports-HAR/

五.测试结果校验器(validator)

在自动化测试执行的时候,会在发起HTTP请求、解析结果响应之后,逐个检查各个校验项,若存在任意校验项不通过的情况,则该test将终止并被标记为失败。

举例说明:

- test:
    name: get token
    request:
        url: http://127.0.0.1:5000/api/get-token
        method: GET
    extract:
        - token: content.token
    validate:
        - {"check": "status_code", "comparator": "eq", "expect": 200}
        - {"check": "content.token", "comparator": "len_eq", "expect": 16}
           
每一个test可以指定0个或多个校验项,放置在validate中。每一个校验项均为一个json结构。里面包含check(要检查的字段)、comparator(字段对应着比较方式,若不指定则默认采用eq即检查字段与预期值相等)、expect(检查字段预期的值)

优化:

实现的功能:

新增支持自定义结果校验器

结果校验器中实现变量引用

结果校验内容新增支持正则表达式提取

check和expect均可以实现变量的引用,check还新增了采用正则表达式提取内容的方式comparator可以实现自定义方法的调用

为了实现尽可能强大的检查功能,check属性值可通过链式操作精确指定具体的字段,comparator也内置实现了大量的检查功能。

约定大于配置思想在框架中实现自定义结果校验器的机制,用户在有需要的时候,可以自己编写校验函数,然后在valiadate中引用校验函数

参考:

https://debugtalk.com/post/HttpRunner-validator-optimization/

六…HttpRunner通过skip机制实现对测试用例的分组执行控制(借鉴unittest)

https://debugtalk.com/post/HttpRunner-skip-feature/

七.参数化数据驱动( LoadRunner)

- config:
    name: "demo"
    parameters:  # 参数
        - user_agent: ["iOS/10.1", "iOS/10.2", "iOS/10.3"]
        - user_id: ${P(user_id.csv)}  #P是一个内置函数parameterize ,用来解析csv文件
        - username-password: ${get_account(10)}  #通过调用函数动态获取参数
           

八.hook机制(hook 函数定义在debugtalk.py文件中)

针对自动化测试用例,要在单个测试用例和整个测试用例集的前后实现hook

在 HttpRunner 中,负责测试执行的类为 httprunner/runner.py 中的 Runner。因此,要实现用例集层面的 hook 机制,只需要将用例集的 setup_hooks 放置到 init 中,将 teardown_hooks 放置到 del 中。

类似地,要实现单个用例层面的 hook 机制,只需要将单个用例的 setup_hooks 放置到 request 之前,将 teardown_hooks 放置到 request 之后。