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

如何使用BeanShell或JSR223验证JDBC请求的Oracle DB响应结果

实现JDBC返回结果校验的方案

推荐优先使用JSR223断言(语言选择Groovy),性能远优于BeanShell,实现逻辑如下:

前置配置

在JDBC Request采样器中,确保变量名称字段填写为dataFromDB,和你调试输出的结果变量名保持一致。

JSR223校验代码

把以下代码复制到JSR223断言的脚本输入框中:

// 预期校验值
def expectedEventLogId = 48144960
// 获取返回的记录总数
int rowCount = dataFromDB.size()

// 校验1:记录数不超过1条
if (rowCount > 1) {
    AssertionResult.setFailure(true)
    AssertionResult.setFailureMessage("校验失败:返回记录数超过1条,实际返回" + rowCount + "条")
    return
}

// 可选校验:如果不允许返回0条记录,放开下面的注释即可
/*
if (rowCount == 0) {
    AssertionResult.setFailure(true)
    AssertionResult.setFailureMessage("校验失败:未查询到符合条件的记录")
    return
}
*/

// 校验2:EVENT_LOG_ID匹配(仅当返回1条记录时执行)
if (rowCount == 1) {
    def actualId = dataFromDB.get(0).get("EVENT_LOG_ID") as Integer
    if (actualId != expectedEventLogId) {
        AssertionResult.setFailure(true)
        AssertionResult.setFailureMessage("校验失败:EVENT_LOG_ID不匹配,预期为" + expectedEventLogId + ",实际为" + actualId)
    }
}

BeanShell版本(仅兼容旧版本JMeter场景使用)

如果必须使用BeanShell,调整代码如下:

// 预期校验值
int expectedEventLogId = 48144960;
// 获取返回的记录总数
int rowCount = dataFromDB.size();

// 校验1:记录数不超过1条
if (rowCount > 1) {
    Failure = true;
    FailureMessage = "校验失败:返回记录数超过1条,实际返回" + rowCount + "条";
    return;
}

// 可选校验:如果不允许返回0条记录,放开下面的注释即可
/*
if (rowCount == 0) {
    Failure = true;
    FailureMessage = "校验失败:未查询到符合条件的记录";
    return;
}
*/

// 校验2:EVENT_LOG_ID匹配(仅当返回1条记录时执行)
if (rowCount == 1) {
    int actualId = ((Integer)dataFromDB.get(0).get("EVENT_LOG_ID")).intValue();
    if (actualId != expectedEventLogId) {
        Failure = true;
        FailureMessage = "校验失败:EVENT_LOG_ID不匹配,预期为" + expectedEventLogId + ",实际为" + actualId;
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 23:30:01