第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_urlsale_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.codejson.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.codejson.data.xxx 断言
  • 能完成"登录提取 token -> 后续接口复用"链路
相关推荐
CHENKONG_CK6 小时前
RFID 重构半导体晶圆盒智能搬运
人工智能·重构·自动化·制造·rfid·rfid
hhb_6186 小时前
Perl脚本自动化日志分析与数据批量处理实操案例
开发语言·自动化·perl
Mr -老鬼6 小时前
EasyClick 安卓CLI全栈专家能力手册
android·自动化·ai编程·easyclick·易点云测
旺财矿工6 小时前
高效搭建:OpenClaw 2.6.6 Windows 11 一键安装教程
人工智能·自动化·ai自动化·openclaw·小龙虾
测试那点事儿7 小时前
第3章零基础接口自动化到 Jenkins 持续集成【项目结构和核心模块入门】
ci/cd·自动化·jenkins
测试那点事儿7 小时前
第5章 零基础接口自动化到 Jenkins 持续集成【参数关联与登录鉴权实战】
ci/cd·自动化·jenkins
测试那点事儿7 小时前
第6章 零基础接口自动化到 Jenkins 持续集成【报告查看与常见报错排查】
ci/cd·自动化·jenkins
Agent手记7 小时前
药物研发数据处理或GSP合规管理医药Agent推荐:2026数智医药全链路自动化实战
运维·人工智能·ai·自动化
大势智慧16 小时前
矿影智测版|矿山自动化测绘,省时精准更省心!
自动化·三维建模·智慧矿山·安全巡检·空间智能··露天矿山