第5章 零基础接口自动化到 Jenkins 持续集成【参数关联与登录鉴权实战】

第5章 参数关联与登录鉴权实战

本章目标

掌握"多变量提取 + 跨接口复用 + 鉴权注入"完整链路,让需要登录态和业务关联数据的接口都能自动化执行。

1. 先理解参数关联

接口自动化最常见需求:

先登录拿 token,再把 token 给后续接口使用。

进阶场景还包括:

  • 下单接口返回 orderNo,给"查询订单详情"接口使用
  • 创建用户返回 userId,给"查询/编辑/删除用户"接口使用
  • 课程创建返回 courseId,给"上下架/删除课程"接口使用

2. 参数关联语法(先记住这 2 条)

前置接口提取:

yaml 复制代码
extract:
  变量名: "响应JSON路径"

后续接口引用:

yaml 复制代码
${变量名}

本框架中可引用的位置:

  • headers
  • params
  • data
  • json

3. 实战一:登录接口提取 token

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

执行后,提取值会落入 config/extract.yaml

4. 实战二:后续接口复用 token 与 user_id

4.1 方式一:自动鉴权(推荐)

yaml 复制代码
request:
  method: "POST"
  url: "/api/order/list"
  need_auth: true
  json:
    userId: "${user_id}"

说明:need_auth: true 会自动把 auth_token 注入请求头(auth / Authorization)。

4.2 方式二:手动 header 引用

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

5. 实战三:业务 ID 串联(下单 -> 查询详情)

5.1 下单接口提取 order_no

yaml 复制代码
- project: "演示项目"
  module: "订单模块"
  api_name: "创建订单"
  title: "创建订单并提取order_no"
  base_url_key: "sale_admin_url"
  request:
    method: "POST"
    url: "/api/order/create"
    need_auth: true
    json:
      userId: "${user_id}"
      productId: 1001
      count: 1
  extract:
    order_no: "data.orderNo"
  validate:
    - eq: ["status_code", 200]
    - eq: ["json.code", 0]

5.2 订单详情接口复用 order_no

yaml 复制代码
- project: "演示项目"
  module: "订单模块"
  api_name: "订单详情"
  title: "通过order_no查询详情"
  base_url_key: "sale_admin_url"
  request:
    method: "GET"
    url: "/api/order/detail"
    need_auth: true
    params:
      orderNo: "${order_no}"
  validate:
    - eq: ["status_code", 200]
    - eq: ["json.code", 0]

6. 为什么每次执行前要清空 extract

conftest.py 会在会话开始时清理历史提取值,避免旧 token 污染新执行结果。

7. 常见失败原因与排查顺序

  • 登录接口先后顺序不对(登录文件名未排前)
  • extract 表达式错误,没取到 token
  • token 过期,环境数据变更
  • 变量名写错(提取是 order_no,引用写成 ${orderNo}

推荐排查顺序:

  1. logs/ 是否有"提取变量"日志
  2. config/extract.yaml 是否已写入变量
  3. 看后续请求日志中变量是否已替换成真实值
  4. 再检查断言和业务数据

本章验收标准

  • 你能完成"登录提取 token/user_id -> 下单提取 order_no -> 订单详情复用"的链路
  • 你能区分自动鉴权(need_auth: true)与手动 header 引用两种方式
  • 能解释 extract.yaml 在整条链路中的作用
相关推荐
techdashen13 分钟前
Uber 的全局限流系统:从零散 Redis 限流到服务网格里的自动化流量保护
数据库·redis·自动化
志栋智能1 小时前
超自动化安全如何优化安全运营成本?
人工智能·安全·自动化
曦尧2 小时前
RuView:用普通 WiFi 信号实现穿墙空间感知与生命体征监测
ai·自动化
小牛不牛的程序员3 小时前
利用Claude Code构建自动化需求挖掘工具:从原理到实践
java·算法·自动化
AC赳赳老秦4 小时前
采购专员自动化:OpenClaw 自动比价、生成询价单、跟踪供应商报价进度实战指南
开发语言·数据库·人工智能·python·自动化·github·openclaw
Lottie20265 小时前
京东电商进阶运营:精准定价+安全铺货+竞品监控+利润管控全自动化方案
运维·安全·自动化
至乐活着5 小时前
前端工程化最佳实践:从规范到自动化构建的全面指南
webpack·自动化·代码规范·构建工具·前端工程化
懂AI的老郑6 小时前
工业检测场景下智能体的应用:从自动化到智能化
运维·自动化
苏州邦恩精密6 小时前
蔡司3D扫描仪怎么选?从企业检测需求看供应商实力
人工智能·机器学习·3d·自动化·制造