HttpRunner基础知识
1 是什么
HttpRunner是开源的API测试工具,具有丰富的插件化机制和高度的可扩展能力。可将抓包后导出的har
文件转换为Json/Yaml格式的测试数据,再根据测试数据自动生成基于pytest的测试用例,然后进行用例运行。也可以结合Locust进行性能测试。
2 设计理念
- 约定大于配置:测试用例是标准结构化的,格式统一
- 支持与 HAR/Postman/Swagger/Curl/JMeter 等工具对接,轻松实现用例生成和转换
3 核心特性
- 用例支持多种格式
- 支持录制&生成测试用例
- 复杂场景:基于 variables/extract/validate/hooks 机制可以方便地创建任意复杂的测试场景
4 核心概念
4.1 测试用例(TestCase)
- 测试用例应该是完整独立的,每条测试用例都应该可以独立运行
- 每个YAML/JSON文件对应一条测试用例
- 已测试用例为核心,将任意测试场景抽象为有序步骤的集合
4.2 变量(variables)
约定通过 ${}
或 $
的形式来引用变量
4.3 函数(functions)
约定通过${}
的形式来调用插件函数
1 | ${func{$a,$b}} |
4.4 参数提取(extract)
通过JsonPath表达式或者正则表达式(regex)来进行提取
4.5 自定义函数(debugtalk.py)
即函数助手,函数的实现逻辑写在这个文件里面
4.6 参数化数据驱动(parameterize)
4.7 Hook机制(hooks)
用于实现测试步骤前后置操作,类似于pytest中的setUp和tearDown
4.8 结果校验(validate)
结果校验内容包含了 4 个字段,分别是字段提取表达式、断言函数、预期结果以及提示信息
- 字段提取表达式:用于提取目标字段用作断言函数的输入,支持 jmespath 表达式和正则表达式(regex)两种提取方式
- 断言函数:顾名思义,就是用于对目标字段与预期结果是否满足相等、大小、包含、被包含等关系进行断言的函数,目前支持内置函数,不支持自定义拓展
- 预期结果:指定断言的预期结果,用作断言函数的另一个输入
- 提示信息:当前断言操作对应的提示信息,该字段为选填
5 常用命令
- hrun:主要运行测试用例
- hmake:将yaml/json格式的用例数据转换为pytest测试用例
- har2case:将har文件转化为yaml/json格式的测试用例
- locust:性能测试
6 用例格式
1 | config: |