第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 -> 后续接口复用"链路
相关推荐
MXsoft61820 小时前
**分组管理:按机房、业务、部门灵活建组,支持跨组归属**
自动化
Mr -老鬼20 小时前
EasyClick 入门指南:HTTP 网络请求与 API 对接实战
网络·网络协议·http·自动化·#easyclick
tedcloud12320 小时前
Supermemory部署教程:打造Agent记忆与RAG环境
服务器·人工智能·学习·自动化·powerpoint
开发者联盟league20 小时前
使用Jenkins整合Sonarqube/Gitlab/Harbor/Kubernetes的Demo工程
kubernetes·gitlab·jenkins
工业机器人销售服务20 小时前
伯朗特冷轧钢板自动上下料,无痕平稳取放,适配精密钣金加工产线
机器人·自动化
开发者联盟league20 小时前
使用k8s安装Jenkins
容器·kubernetes·jenkins
PixelBai21 小时前
JSON差异比较集成指南与工作流自动化
运维·自动化·json
feasibility.21 小时前
摆脱专利撰写内耗!OpenCode/Hermes 自动产出专利交底书(含安装和演示)
科技·自动化·专利·skills·opencode·hermes·爱马仕
ElevenS_it18821 小时前
网络设备配置合规审计自动化实战:用Nornir+Netmiko自动比对华为/Cisco/H3C配置基线+合规报告自动生成
运维·网络·自动化
weixin_3077791321 小时前
从“大海捞针”到“主动推理”:AI如何重塑云原生故障诊断的根因链
开发语言·人工智能·算法·自动化·原型模式