使用 k6 JSON 输出生成 html 报告

use*_*083 5 javascript load-testing k6

是否有任何可用的插件可以从 K6 生成的 JSON 输出生成 html 报告?我正在尝试构建一个简单的 HTML 报告,但生成的输出 JSON 无效且无法解析。以下是 K6 的 JSON 输出。

{"type":"Metric","data":{"name":"data_received","type":"counter","contains":"data","tainted":null,"thresholds":[],"submetrics":null,"sub":{"name":"","parent":"","suffix":"","tags":null}},"metric":"data_received"}
{"type":"Point","data":{"time":"2020-07-30T21:06:05.6026767Z","value":0,"tags":{"group":"::setup"}},"metric":"data_received"}
{"type":"Metric","data":{"name":"iteration_duration","type":"trend","contains":"time","tainted":null,"thresholds":[],"submetrics":null,"sub":{"name":"","parent":"","suffix":"","tags":null}},"metric":"iteration_duration"}
{"type":"Point","data":{"time":"2020-07-30T21:06:05.6026767Z","value":0.09,"tags":{"group":"::setup"}},"metric":"iteration_duration"}
Run Code Online (Sandbox Code Playgroud)

小智 8

https://github.com/benc-uk/k6-reporter

K6 的此扩展旨在通过添加到 K6 测试代码 (JavaScript) 中来使用,并利用添加到 K6 v0.30.0 中的 handleSummary 回调挂钩。测试完成后,一个 HTML 文件将被写入文件系统,其中包含格式化且易于使用的测试摘要数据版本

要使用,请将此模块添加到您的测试代码中。

从 GitHub 上远程托管的捆绑模块导入 htmlReport 函数

import { htmlReport } from "https://raw.githubusercontent.com/benc-uk/k6-reporter/main/dist/bundle.js";
Run Code Online (Sandbox Code Playgroud)

笔记。将 main 替换为版本标签(例如 2.2.0)以使用特定版本

然后在测试的默认函数之外,用 K6 在任何测试结束时调用的 handleSummary(data) 函数将其包装,如下所示:

export function handleSummary(data) {
  return {
    "summary.html": htmlReport(data),
  };
}
Run Code Online (Sandbox Code Playgroud)

返回对象中使用的键是将要写入的文件名,可以是任何有效的文件名或路径注意。这是 v2.1.1 版本中的更改

htmlReport 函数接受可选选项映射作为第二个参数,具有以下属性

title string // 报告的标题,默认为当前日期 多个输出 如果您想更好地控制生成的输出或将摘要输出到多个位置(包括 stdout),只需将 htmlReport 的结果与其他摘要生成器结合起来,如下所示:

// 这将导出为 HTML 文件名“result.html”,并且还使用文本摘要导出为标准输出

import { htmlReport } from "https://raw.githubusercontent.com/benc-uk/k6-reporter/main/dist/bundle.js";
import { textSummary } from "https://jslib.k6.io/k6-summary/0.0.1/index.js";

export function handleSummary(data) {
  return {
    "result.html": htmlReport(data),
    stdout: textSummary(data, { indent: " ", enableColors: true }),
  };
}
Run Code Online (Sandbox Code Playgroud)