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"
  }
}