第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 在整条链路中的作用
相关推荐
FORCECON12 小时前
力控SCADA驱动 :告别传统寻址,EIP协议全新适配升级
自动化·驱动·scada·监控组态软件·采集监控平台
attitude.x5 小时前
Cursor+GitOps:自动化运维新姿势
运维·自动化
CIO_Alliance9 小时前
AI+iPaaS解决方案:跨系统业务流程自动化助力企业AI化转型
运维·人工智能·自动化
CodexDave10 小时前
Python 自动化接单实战(一):把 CSV 需求做成配置驱动解析器
java·python·自动化·json·数据清洗·python自动化·csv处理
huameinan狮子10 小时前
微服务化的基石——持续集成
大数据·ci/cd·微服务
IT小白杨10 小时前
指纹浏览器安全架构技术评测与API自动化能力对比
经验分享·安全·自动化·业界资讯·安全架构·指纹浏览器
云飞云共享云桌面10 小时前
智能装备研发部门SolidWorks服务器8-10人共享怎么样
运维·服务器·自动化·汽车·制造
一次旅行11 小时前
act本地预跑GitHub Actions:Python项目完整CI/CD流水线实战
python·ci/cd·github
CodexDave11 小时前
Python 自动化接单实战(二):Excel 批量清洗如何把规则与异常分开
python·自动化·excel·python自动化·数据处理·excel清洗·异常报告
爱网络爱Linux12 小时前
RHCSA+RHCE 10.0全新升级!红帽Ansible自动化运维
运维·自动化·ansible·rhce认证·rhel1o·linux10·rhce10