第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 -> 后续接口复用"链路
相关推荐
智商网输送线配件25 分钟前
2026 自动化流水线配件采购难题破解:小批量混批与非标定制的供应链实测
大数据·人工智能·自动化·智商网·流水线设备配件
troy12829 分钟前
Codex 安全盲区:代码漏洞生成实测
windows·python·ci/cd·pycharm·django·github·fastapi
iPad协议个微协议2 小时前
微信自动回复从关键词到 AI:WechatApi 如何连接消息、模型和人工
微信·自动化·微信开发·wechatapi·个人微信号二次开发
liulilittle3 小时前
mock 规范总纲
ai·自动化·llm·mock·测试·tools
liulilittle4 小时前
麻将结算全链路语义(SETTLE_SEMANTICS)
ai·自动化·llm·mock·lua·测试
jingli95 小时前
恶意退款怎么办、仅退款怎么申诉:六类恶意退款识别特征+取证证据链+反制全流程(商家实操版)
人工智能·自动化·用户运营
苍苍竹林寺5 小时前
Module Builder——Gem200之Alarm模块
自动化·半导体·eap
jingli96 小时前
微信自动回复怎么设置?重复问题怎么自动回答——私域FAQ自动应答搭建全流程(关键词匹配+知识库+语义AI,2026实操版)
人工智能·自动化·用户运营
微信ipad协议开发6 小时前
教培机构微信自动化:从招生引流到社群运维的完整链路
微信·机器人·自动化·教育电商
liulilittle6 小时前
麻将服务器崩溃补偿与异常处理语义(CRASH_SEMANTICS)
ai·自动化·llm·mock·lua·测试·tools