第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 在整条链路中的作用
相关推荐
收放扳机11 分钟前
蜘蛛机械手高速收板方案:CD视觉与并联机械手的技术特点
人工智能·科技·自动化·制造·pcb工艺
海兰13 分钟前
使用 ES|QL 调试 LLM 延迟、成本与 GPU 饱和度
大数据·elasticsearch·jenkins
heimeiyingwang15 分钟前
【架构实战】Jenkins+GitLab CI/CD:持续集成与持续部署实践
架构·gitlab·jenkins
忆林52025 分钟前
Jenkins前端打包构建老项目拯救指南
运维·前端·jenkins
工业机器人销售服务34 分钟前
攻克大型钣金搬运难题:伯朗特高负载机型完成重型工件精准移栽,保障作业全程安全
机器人·自动化
测试员周周7 小时前
【Appium 系列】第16节-WebView-H5上下文切换 — 混合应用的自动化难点
运维·开发语言·人工智能·功能测试·appium·自动化·测试用例
北京耐用通信10 小时前
全域适配工业场景耐达讯自动化Modbus TCP 转 PROFIBUS 网关轻松实现以太网与现场总线互通
网络·人工智能·网络协议·自动化·信息与通信
裴东青12 小时前
10-实战:RuoYi-Cloud的自动化发布
运维·ci/cd·自动化
迁移科技13 小时前
告别人工分拣!迁移科技 AI+3D 视觉让机器人 “看懂” 无序抓取
人工智能·科技·3d·机器人·自动化·视觉检测
xxx1x1x13 小时前
极客向:DLL/运行库故障的底层逻辑与自动化修复方案
运维·自动化·dll文件·dll·dll修复·dll缺失·dll一键修复