四.接口测试外的其他功能
四.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 之后。