Jmeter Html报告显示多个(第一个)失败的Assert

f87krz0w  于 2022-11-09  发布在  其他
关注(0)|答案(1)|浏览(157)

有没有人知道是否可以配置Jmeter html报告,使html报告不仅显示第一个失败的Assert,而且显示所有失败的Assert?生成的xml_log.jtl如下所示。

<assertionResult>
    <name>Response Assertion [202]</name>
    <failure>true</failure>
    <error>false</error>
    <failureMessage>Test failed: code expected to equal /

received  : [2]00

comparison: [3]00

/</failureMessage>
  </assertionResult>
  <assertionResult>
    <name>Duration Assertion [5ms] request</name>
    <failure>true</failure>
    <error>false</error>
    <failureMessage>The operation lasted too long: It took 293 milliseconds, but should not have lasted longer than 5 milliseconds.</failureMessage>
  </assertionResult>

并生成报表:

  • 谢谢-谢谢
moiiocjp

moiiocjp1#

关键是HTML Reporting Dashboard只能以CSV格式.jtl results files生成
Jmeter 板生成器是JMeter的一个模块化扩展。它的默认行为是从CSV文件读取和处理样本,以生成包含图形视图的HTML文件。
而CSV格式的.jtl结果文件仅存储有关第一个失败Assert的信息。
您可以通过添加JSR223侦听器来解决此问题,以遍历所有Assert失败,将失败消息组合为单个消息,并使用此组合的累积合成消息替换第一个Assert的失败消息,示例代码:

def message = new StringBuilder()

prev.getAssertionResults().each { assertionResult ->
    message.append(assertionResult.getFailureMessage()).append(System.getProperty('line.separator'))
}

if (prev.getAssertionResults().size() > 0) {
    prev.getAssertionResults().first().setFailureMessage(message.toString())
}

有关JMeter中的Groovy脚本的更多信息:Apache Groovy - Why and How You Should Use It

相关问题