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

Artillery测试GraphQL接口无法查看调试日志求助

解决Artillery GraphQL性能测试无法查看错误与调试日志的问题

问题概述

使用Node.js的Artillery工具通过YAML场景做GraphQL接口性能测试,测试可正常运行,但无法查看GraphQL请求的错误信息及响应内容。尝试在Windows CMD和PowerShell中设置DEBUG=http,http:request,http:response环境变量后,仍无法获取调试日志。

测试脚本及执行命令如下:

config:
  target: 'https:test.dev.demo.io' # 注意:此处URL缺少双斜杠,应为https://test.dev.demo.io
  plugins:
    ensure: {}
    expect: {}
    metrics-by-endpoint:
      useOnlyRequestNames: true
      metricsNamespace: "latency_metrics"
  phases:
    - duration: 1
      arrivalRate: 1
scenarios:
- name: "Get Bill Status"
  flow:
    - log: "Get Bill Status GRAPH QL Test running"
    - get:
        url: "/graphql"
        headers: {
            Authorization: "bearer f32tb20190ac1abd0a24a6e27cf124f9f7308a65592b8a72a5115995edc32277"
            }
        expect:
            - statusCode: 200
        json:
            query: |
              query {
                getApiV1BillRequestIdStatus(requestId: "e9e5a487-4c55-48cc-853d-1bd9466db53d"}) { # 注意:此处多了一个闭合括号
                  code
                  data
                  message
                }
              }
        capture:
          - json: $.code
            as: status_code

Windows CMD执行命令:

set DEBUG=http
artillery run my-script.yml

Windows PowerShell执行命令:

$Env:DEBUG = 'http'
artillery run my-script.yml

解决方案

1. 使用Artillery专属的DEBUG命名空间

Artillery有自己的调试日志命名空间,而非通用的http前缀。需设置正确的DEBUG变量:

  • Windows CMD:
    set DEBUG=artillery:http,artillery:plugins,artillery:core
    artillery run my-script.yml
    
  • Windows PowerShell:
    $Env:DEBUG = 'artillery:http,artillery:plugins,artillery:core'
    artillery run my-script.yml
    

若需要更详细的日志,可直接使用DEBUG=artillery*开启所有Artillery相关调试日志。

2. 在测试脚本中添加响应日志输出

通过capture捕获完整响应内容,并用log步骤打印,直接在控制台查看:
修改场景中的flow部分:

scenarios:
- name: "Get Bill Status"
  flow:
    - log: "Get Bill Status GRAPH QL Test running"
    - get:
        url: "/graphql"
        headers: {
            Authorization: "bearer f32tb20190ac1abd0a24a6e27cf124f9f7308a65592b8a72a5115995edc32277"
            }
        expect:
            - statusCode: 200
        json:
            query: |
              query {
                getApiV1BillRequestIdStatus(requestId: "e9e5a487-4c55-48cc-853d-1bd9466db53d") { # 修正多余的括号
                  code
                  data
                  message
                }
              }
        capture:
          - json: $
            as: full_response
          - json: $.code
            as: status_code
    - log: "Response: {{ full_response }}"
    - log: "Status Code from GraphQL: {{ status_code }}"

3. 生成详细测试结果文件

使用--output参数将测试结果输出到JSON文件,文件中包含所有请求的响应数据、错误信息及性能指标:

# CMD中
set DEBUG=artillery:http
artillery run --output test-results.json my-script.yml
# PowerShell中
$Env:DEBUG = 'artillery:http'
artillery run --output test-results.json my-script.yml

打开生成的test-results.json,可在entries字段下查看每个请求的完整详情。

4. 修正脚本中的基础错误

  • 修正target字段的URL:将https:test.dev.demo.io改为https://test.dev.demo.io,否则请求会失败。
  • 修正GraphQL查询中的语法错误:requestId参数后多了一个闭合括号,需删除,否则GraphQL服务会返回语法错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 05:33:21