HttpRunner接口测试
# 安装
bash -c "$(curl -ksSL https://httprunner.com/script/install.sh)"
# 创建Go版本的示例项目
hrp startproject demo --go
# 接口测试
hrp run testcases/demo.json -g
通用概念
- 测试步骤:对应一个具体的用户操作,支持的步骤类型:
- request
- api
- testcase
- transaction
- rendezvous
- think_time
- websocket
增强测试用例
增强操作类型 | 含义 | 适用的测试步骤类型 |
---|---|---|
variables | 局部变量 | 所有类型 |
extract | 参数提取 | request/api |
validate | 结果校验 | request/api |
export | 导出变量 | testcase |
变量/variables
优先级从高到低(局部 > 全局):step > session > parameter > config variables
声明位置 | 作用域 | 说明 |
---|---|---|
config variables | 整个测试用例 | 全局变量 |
parameters | 整个测试用例 | 数据驱动参数 |
teststeps variables | 当前测试步骤 | 局部变量 |
extract(类似于session) | 当前及之后的测试步骤 | 某测试步骤提取的响应参数,参数关联 |
参数
支持三种输入方式 :
- 参数列表
- 从文件读取: 中横线分割多个变量
自定义函数(返回列表)
parameters_setting:
- pick_order: 默认 sequential
- limit: 限制迭代次数,默认为所有组合
"config": {
"name": "request params testcase",
"parameters": {
"foo": [
"iOS10",
"iOS11"
],
"username-password": "${parameterize($file)}"
},
"parameters_setting": {
"pick_order": "sequential",
"strategies": {
"username-password": {
"name": "user-info",
"pick_order": "sequential"
}
},
"limit": 6
},
"variables": {
"file": "fixture/account.csv"
},
},
参数(从响应)提取
json响应使用jmespath.
作用域为当前步骤及之后的步骤,引用方式与普通的变量一致。
extract的对象支持5种类型:
- status_code
- proto
- headers
- cookies
- body
注:字符-需要特殊处理,headers."Content-Type"
{
"extract": {
"token": "body.access_token"
}
}