HttpRunner 编写测试用例

一、先记住 4 个核心结构(所有用例都一样)

任何 HttpRunner 用例,都只由 4 部分 组成:

  1. config ------ 全局配置(域名、变量)
  2. teststeps ------ 测试步骤(发请求)
  3. extract ------ 提取返回值(给下一个接口用)
  4. validate ------ 断言(判断接口对不对)

就这 4 个!


二、直接给你一个 万能模板

你以后写接口,复制这个模板改一改就能用

复制代码
config:
  name: "我的第一个接口测试用例"
  base_url: "https://postman-echo.com"  # 接口域名
  variables:
    username: "test123"
    password: "123456"

teststeps:
- name: "第一步:发送GET请求"
  request:
    method: GET
    url: /get
    params:
      name: $username
  validate:
    - eq: ["status_code", 200]

- name: "第二步:发送POST表单请求"
  request:
    method: POST
    url: /post
    headers:
      Content-Type: "application/x-www-form-urlencoded"
    body: "username=$username&password=$password"
  validate:
    - eq: ["status_code", 200]
    - eq: ["body.form.username", "test123"]

三、我一句一句教你写(超级小白版)

1)config:写接口域名 + 全局变量

复制代码
config:
  name: "测试用例名字"
  base_url: "https://xxx.com"   # 接口域名
  variables:                   # 变量
    username: "张三"

作用:

  • 所有步骤共用一个域名
  • 变量可以在任何地方用 $username

2)teststeps:发请求(一个 - 就是一步)

复制代码
teststeps:
- name: "登录接口"
  request:
    method: POST          # GET / POST
    url: /user/login      # 接口路径
    headers:
      Content-Type: application/json
    json:
      username: $username
      password: "123456"

你只需要改:

  • method
  • url
  • headers
  • body/json/params

3)extract:从返回结果里拿值(超级重要!)

比如返回是:

复制代码
{
  "body": {
    "token": "abcd1234"
  }
}

你想把 token 拿出来:

复制代码
extract:
  token: body.token

后面步骤就能用 $token


4)validate:断言(判断接口是否正确)

复制代码
validate:
  - eq: ["status_code", 200]          # 状态码必须200
  - eq: ["body.msg", "登录成功"]       # 返回消息必须正确
  - eq: ["body.code", 0]              # 业务码必须0

eq = 等于 所有断言都通过 → 用例成功 ✅


四、写 3 个最常用的示例

示例 1:GET 请求(带参数)

复制代码
config:
  name: "GET请求示例"
  base_url: "https://postman-echo.com"

teststeps:
- name: "GET带参数"
  request:
    method: GET
    url: /get
    params:
      id: 100
      name: "zhangsan"
  validate:
    - eq: ["status_code", 200]

示例 2:POST 表单(最常用)

复制代码
config:
  name: "POST表单示例"
  base_url: "https://postman-echo.com"

teststeps:
- name: "发表单"
  request:
    method: POST
    url: /post
    headers:
      Content-Type: "application/x-www-form-urlencoded"
    body: "username=zhangsan&password=123456"
  validate:
    - eq: ["status_code", 200]

示例 3:POST JSON(最常用)

复制代码
config:
  name: "POST JSON示例"
  base_url: "https://postman-echo.com"

teststeps:
- name: "发JSON"
  request:
    method: POST
    url: /post
    json:
      username: "zhangsan"
      password: "123456"
  validate:
    - eq: ["status_code", 200]

五、写完怎么运行?

复制代码
hrp run 你的用例.yml --gen-html-report

运行成功你会看到:

复制代码
result=true
result=true
result=true

六、容易犯的 3 个错

  1. 缩进不对(YAML 严格缩进,用空格,不要用 Tab)
  2. url 写错
  3. 断言写错字段(比如 body.data 写成 body.Data)

七、用AI工具写

你只要告诉它:

  1. 接口地址
  2. 请求方式(GET/POST)
  3. 参数
  4. 返回结果

直接给你生成可运行的 HttpRunner 用例,复制就能跑!

相关推荐
hsjiasb8 小时前
FreeRTOS学习(二十七)——任务栈与栈溢出检测
开发语言·stm32·学习·学习笔记·freertos
丰锋ff9 小时前
3.1 Qt事件之事件处理器
开发语言·qt
多弗朗皮卡丘9 小时前
C语言梦开始的地方7:函数
c语言·开发语言
月华路10 小时前
G1 垃圾回收:脏卡队列、记忆集与并发精化线程机制
java·开发语言
gugucoding10 小时前
47. 【Java】Java内存模型(JMM)与可见性
java·开发语言
m0_3807438710 小时前
从零调用 Claude 教程
开发语言·python·node.js
起床学FPGA11 小时前
AI回答问题之后,会自动跳到最下面的问题
开发语言·javascript·ecmascript
x_x-F12 小时前
网络数据从网卡到用户态:一场基于内存所有权转移的接力赛
开发语言·网络·php
名字还没想好☜12 小时前
Java 线上内存泄漏排查实战:jmap 导堆、MAT 找 GC Roots 与四类常见泄漏
java·开发语言·jvm·内存泄漏
码匠许师傅12 小时前
【C++ 面试真题】聊聊 C++ 的多继承与虚继承
开发语言·c++·面试