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
相关产品推荐
相关产品推荐

