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

JSR223断言失败但Sampler未失败,如何让主Sampler失败?

解决JMeter JSR223断言失败但主Sampler未失败的问题

核心排查点与解决方案

1. 确认JSR223断言的作用域

确保你的JSR223断言是直接挂载在目标Sampler节点下,而非线程组或其他父级节点。如果断言作用域覆盖多个Sampler,可能无法正确标记单个Sampler的失败状态。

2. 修正JSR223断言代码

当前代码缺少对errorvalue或experror为空的判断,可能导致未预期的异常,进而影响断言逻辑执行。以下是完善后的代码:

// 获取实际返回的错误消息
def errorvalue = vars.getObject("errorvalue_1")
log.info("实际返回的错误消息: " + errorvalue)

// 获取预期的错误消息
def experror = vars.get("ErrorMsg")
log.info("预期的错误消息: " + experror)

// 先判空,避免空指针异常
if (errorvalue == null || experror == null) {
    log.info("错误消息为空,断言失败")
    AssertionResult.setFailure(true)
    AssertionResult.setFailureMessage("实际或预期错误消息为空")
} else if (errorvalue.toString().equals(experror.toString())) {
    log.info("错误消息匹配")
    AssertionResult.setFailure(false)
    AssertionResult.setFailureMessage("错误消息匹配")
} else {
    log.info("错误消息不匹配")
    AssertionResult.setFailure(true)
    AssertionResult.setFailureMessage("错误消息不匹配:实际值[" + errorvalue + "],预期值[" + experror + "]")
}

3. 检查JSR223断言的配置

在JSR223断言的配置界面,确保:

  • 选择的语言是Groovy(推荐使用Groovy而非其他语言,兼容性更好)
  • 未勾选"Continue on error"选项(如果勾选,即使断言失败也不会终止Sampler的失败标记)

4. 补充状态码验证

你的场景需要验证状态码=400,建议额外添加一个响应断言:

  • 勾选"响应代码"
  • 匹配规则选择"Equals"
  • 填入预期值400
    将该断言同样挂载在目标Sampler下,确保状态码不匹配时也能标记Sampler失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 03:34:53