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

如何将Gatling结果输出至控制台并复用至自定义报告与消息推送?

Gatling测试结果导出与自定义使用方案

完全可行,Gatling提供了灵活的API来获取测试运行的统计数据,你可以轻松实现控制台输出、自定义报告生成以及消息推送的需求,具体实现方式如下:

一、提取测试结果并输出到控制台

你可以通过Gatling的Simulation类中的afterSimulation钩子,捕获测试结束后的统计数据并输出到控制台:

实现代码示例

在你的Gatling仿真类中添加以下逻辑,测试结束后会自动提取并打印指定指标:

import io.gatling.core.Predef._
import io.gatling.http.Predef._

class LoadTestSimulation extends Simulation {
  // 这里定义你的测试场景、协议配置等内容...

  override def afterSimulation(): Unit = {
    val runStats = runId.flatMap(statsEngine.statsForRun)
    
    runStats.foreach { stats =>
      val totalSuccess = stats.requestStats.values.map(_.successCount).sum
      val p95Response = stats.requestStats.values.map(_.responseTime.percentile95).max

      println("\n=== 测试核心结果 ===")
      println(s"成功请求总数: $totalSuccess")
      println(s"95%响应时间(ms): $p95Response")
    }
  }
}

二、利用结果变量生成自定义报告/推送消息

提取到的totalSuccess、p95Response等变量可以直接用于后续自定义操作:

1. 生成自定义报告

你可以将数据写入HTML模板(或纯文本、CSV等格式),生成自定义报告文件:

// 示例:生成极简HTML报告
val reportContent = s"""
<!DOCTYPE html>
<html>
<head><title>Gatling测试报告</title></head>
<body>
  <h2>测试核心指标</h2>
  <p>成功请求数: $totalSuccess</p>
  <p>95%响应时间: ${p95Response}ms</p>
</body>
</html>
"""
// 将内容写入本地文件
import java.nio.file.{Files, Paths}
Files.write(Paths.get("custom_test_report.html"), reportContent.getBytes)

2. 邮件发送测试结果

使用JavaMail相关库,将核心指标或自定义报告以邮件形式发送:

// 示例:简化邮件发送逻辑(需引入javax.mail依赖)
import javax.mail._
import javax.mail.internet._

val smtpProps = System.getProperties()
smtpProps.put("mail.smtp.host", "your-smtp-server-address")
val session = Session.getDefaultInstance(smtpProps, null)

val mailMsg = new MimeMessage(session)
mailMsg.setFrom(new InternetAddress("sender@your-domain.com"))
mailMsg.addRecipient(Message.RecipientType.TO, new InternetAddress("receiver@your-domain.com"))
mailMsg.setSubject("Gatling性能测试结果")
mailMsg.setText(s"本次测试核心数据:\n成功请求数: $totalSuccess\n95%响应时间: ${p95Response}ms")

Transport.send(mailMsg)

3. 即时通讯工具推送

调用对应IM工具的Webhook接口(比如企业微信机器人、Slack机器人),推送测试结果:

// 示例:推送至企业微信机器人
import scala.io.Source
import java.net.{HttpURLConnection, URL}

val webhookUrl = "your-wechat-robot-webhook-url"
val pushContent = s"""{"msgtype":"text","text":{"content":"Gatling测试结果:成功请求数$totalSuccess,95%响应时间${p95Response}ms"}}"""

val conn = new URL(webhookUrl).openConnection().asInstanceOf[HttpURLConnection]
conn.setRequestMethod("POST")
conn.setRequestProperty("Content-Type", "application/json")
conn.setDoOutput(true)

val outputStream = conn.getOutputStream()
outputStream.write(pushContent.getBytes)
outputStream.flush()
outputStream.close()

// 可选:读取接口响应
val response = Source.fromInputStream(conn.getInputStream).mkString
conn.disconnect()

注意事项

  • 确保项目中引入了对应依赖(比如邮件库、HTTP客户端库)
  • 如需更多指标(如失败请求数、平均响应时间),可参考Gatling API中的Stats和RequestStats类扩展逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 23:07:49