第4章 零基础接口自动化到 Jenkins 持续集成【写第一个 YAML 接口测试用例】

第4章 写第一个 YAML 接口测试用例

本章目标

在不修改框架代码的前提下,新增一个可执行用例。

1. 命名规则

  • 文件必须以 _test.yaml 结尾
  • 登录用例建议 01_login_test.yaml(便于优先执行)

2. 最小模板

在 data/ 下新增 demo_test.yaml:

yaml 复制代码
- project: "演示项目"
  module: "基础模块"
  api_name: "健康检查"
  title: "健康检查返回200" 
  base_url_key: "admin_url"
  request:
    method: "GET"
    url: "/ping"
    params:
      t: 1
  validate:
    - eq: ["status_code", 200]

3. 常用字段含义

  • project/module/api_name/title:报告分组和标题
  • base_url_key:在 config/config.yaml 中找域名(如 admin_url、sale_admin_url)
  • request:请求参数
  • validate:断言规则

4. 按接口请求方式写用例(GET / POST / 文件上传)

4.1 GET 请求(一般用 params)

yaml 复制代码
- project: "演示项目"
  module: "用户模块"
  api_name: "用户详情"
  title: "GET-查询用户详情"
  base_url_key: "admin_url"
  request:
    method: "GET"
    url: "/api/user/detail"
    params:
      userId: 10001
  validate:
    - eq: ["status_code", 200]
    - eq: ["json.code", 0]

4.2 POST 请求(JSON 请求体,用 json)

yaml 复制代码
- project: "演示项目"
  module: "订单模块"
  api_name: "创建订单"
  title: "POST-JSON创建订单成功"
  base_url_key: "sale_admin_url"
  request:
    method: "POST"
    url: "/api/order/create"
    headers:
      Content-Type: "application/json"
    json:
      productId: 1001
      count: 1
  validate:
    - eq: ["status_code", 200]
    - eq: ["json.code", 0]

4.3 POST 请求(Form 请求体,用 data)

yaml 复制代码
- project: "演示项目"
  module: "登录模块"
  api_name: "账号登录"
  title: "POST-Form登录成功"
  base_url_key: "admin_url"
  request:
    method: "POST"
    url: "/api/admin/v2/account/login"
    headers:
      Content-Type: "application/x-www-form-urlencoded"
    data:
      username: "test"
      password: "123456"
  validate:
    - eq: ["status_code", 200]
    - eq: ["json.code", 0]

4.4 文件上传(files + 可选 data)

yaml 复制代码
- project: "演示项目"
  module: "文件模块"
  api_name: "上传头像"
  title: "POST-文件上传成功"
  base_url_key: "admin_url"
  request:
    method: "POST"
    url: "/api/file/upload"
    files:
      file: "mock-binary-content"
    data:
      bizType: "avatar"
  validate:
    - eq: ["status_code", 200]
    - eq: ["json.code", 0]

说明:

  • 当前框架会把 files 原样透传给 requests,不同接口网关对上传格式要求不同。
  • 如果你的接口要求"真实文件流",建议先和后端确认入参格式;必要时可在框架里补一层"本地路径转文件对象"的封装再统一使用。

5. 按返回值格式写断言(json 与业务 data 字段)

框架断言支持:

  • status_code:HTTP 状态码
  • json.xxx:响应 JSON 字段路径(例如 json.code、json.data.id)

常见写法:

yaml 复制代码
validate:
  - eq: ["status_code", 200]
  - eq: ["json.code", 0]
  - contains: ["json.msg", "success"]
  - contains: ["json.data", "list"]

说明:这里的 json.data 指"响应 JSON 里的 data 字段",不是请求体里的 data 参数。

6. 接口鉴权取值与复用(最常用模板)

6.1 登录接口提取 token

yaml 复制代码
- project: "演示项目"
  module: "登录模块"
  api_name: "登录接口"
  title: "登录成功提取token"
  base_url_key: "admin_url"
  request:
    method: "POST"
    url: "/api/login"
    json:
      username: "test"
      password: "123456"
  extract:
    auth_token: "data.token"
  validate:
    - eq: ["status_code", 200]
    - eq: ["json.code", 0]

6.2 后续接口使用 token

方式一(推荐):自动注入鉴权头

yaml 复制代码
request:
  method: "POST"
  url: "/api/order/list"
  need_auth: true

方式二:手动引用变量

yaml 复制代码
request:
  method: "GET"
  url: "/api/user/info"
  headers:
    Authorization: "Bearer ${auth_token}"

7. 执行测试

bash 复制代码
python3 run.py

8. 查看结果

  • 报告里出现你的 title
  • 失败时查看 logs/ 中请求和响应内容

本章验收标准

  • 能分别写出 GET、POST(JSON)、POST(Form)、文件上传 4 类用例
  • 能根据返回结构写 json.code、json.data.xxx 断言
  • 能完成"登录提取 token -> 后续接口复用"链路
相关推荐
慧都小项5 小时前
从原理图到 PCB 制造数据:设计交付的 4 个核对关口
程序人生·自动化·pcb工艺·电子设计
qq_284274057 小时前
机械原理笔记:平面机构自由度计算(复合铰链、局部自由度、虚约束)与四杆机构入门(含考点)
笔记·学习·平面·自动化·制造
qq_284274058 小时前
数控铣床与加工中心笔记:铣刀与刀柄系统、G54试切对刀、镜像加工指令、孔加工工艺(钻扩铰镗)与固定循环G73/G83/G81/G76/G87/G84
笔记·学习·自动化·制造
科技研学社11 小时前
精度决胜品质:羽绒服缝制工艺标准与自动化精度对标解析
运维·自动化
乐橙开放平台11 小时前
智慧连锁客流检测和离岗检测怎么对接
大数据·人工智能·笔记·物联网·自动化·音视频·智能家居
黑箭科技11 小时前
你的AI Agent在生产环境“裸奔“了多久?用500行Python代码搭建完整的驾驭工程体系
自动化·技术
天远Date Lab14 小时前
零信任架构实战:基于天远学籍核验三要素构建自动化竞赛资格审查网关
运维·人工智能·架构·自动化
波力海苔夹心脆67515 小时前
C# 视觉检测实战:PLC 按钮触发 VisionPro 检测,OK 亮灯 / NG 灭灯(西门子 PLC,含界面显示与图片存档)
开发语言·经验分享·c#·自动化·视觉检测·.net
smile00216 小时前
Modbus RTU/TCP通信测试怎么做?从协议要点到自动化回归的完整实践
tcp/ip·回归·自动化