You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何正确捕获Token并在测试场景中传递?测试返回401未授权

负载测试中正确捕获并传递Token解决401未授权问题

你的配置存在两个核心问题,导致Token无法被正确捕获和传递:

1. Capture配置层级错误

原配置中将capture放在了json字段的子节点下,这不符合Artillery的语法规范——capture是请求的顶级配置项,必须与url、json、expect平级。

2. JSON提取路径可能不匹配

需要确认/sessions接口返回的Token结构,确保JSONPath表达式能准确提取到Token值。

修正后的完整配置

config:
    target: "http://localhost:3333"
    phases:
        - name: "Load Test Periodico"
          arrivalRate: 1
          duration: 5
before:
    flow:
        - post:
              url: "/sessions"
              json:
                  email: "email@email.com"
                  password: "senha123"
              # 将capture移至与json平级的位置
              capture:
                  - json: "$.token.token"  # 根据实际返回结构调整路径
                    as: "token"
              expect:
                  - statusCode: 200
          # 可选:添加日志验证Token是否被正确捕获
          - log: "Captured token: {{ token }}"
scenarios:
    - name: "ProcedureController.index"
      flow:
          - get:
                url: "/procedures"
                headers:
                    Authorization: "Bearer {{ token }}"

额外排查步骤

  • 验证接口返回结构:用curl调用/sessions接口,确认Token的嵌套层级:
    curl -X POST http://localhost:3333/sessions \
    -H "Content-Type: application/json" \
    -d '{"email": "email@email.com", "password": "senha123"}'
    
    • 如果返回是{"token": "abc123"},将提取路径改为$.token;
    • 如果返回是{"token": {"token": "abc123"}},保留$.token.token即可。
  • 检查Authorization头格式:确保Bearer与Token之间有一个空格,避免因格式错误导致401。

内容的提问来源于stack exchange,提问作者Murilo Montino

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 10:16:02