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

如何使用Groovy脚本动态从JDBC响应获取多值并写入Properties TestStep

动态提取JDBC响应字段写入Properties TestStep实现方案

你可以通过在JDBC步骤后新增Groovy脚本步骤实现需求,无需硬编码字段名,后续响应新增字段可自动识别写入:

操作步骤

  1. 在你的JDBC测试步骤后新增Groovy Script测试步骤
  2. 将以下代码粘贴到脚本编辑区,根据你的实际步骤名修改前两行的配置项:
// 配置项:替换为你项目中实际的JDBC测试步骤名称
def jdbcStepName = "JDBC_Query"
// 配置项:替换为你项目中实际的Properties测试步骤名称
def targetPropStepName = "Properties"

// 读取JDBC响应并解析XML
def jdbcResponse = context.testCase.getTestStepByName(jdbcStepName).getResponseContent()
def xmlParser = new XmlSlurper(false, false)
def responseXml = xmlParser.parseText(jdbcResponse)

// 获取目标Properties测试步骤对象
def propStep = context.testCase.getTestStepByName(targetPropStepName)

// 遍历第一行结果的所有字段,自动写入Properties
// 如需要保留多行结果,可替换为下方多行适配代码
responseXml.ResultSet.Row[0].childNodes().each { fieldNode ->
    def fieldName = fieldNode.name()
    def fieldValue = fieldNode.text()
    // 已存在的属性会覆盖值,不存在的属性会自动新增
    propStep.setPropertyValue(fieldName, fieldValue)
}

适配场景扩展

多返回行适配

如果你的JDBC查询会返回多行数据,用以下代码替换上面的字段遍历逻辑即可,会自动给每行属性加行号前缀避免覆盖:

responseXml.ResultSet.Row.eachWithIndex { rowNode, rowIndex ->
    rowNode.childNodes().each { fieldNode ->
        def fieldName = "row${rowIndex + 1}_${fieldNode.name()}"
        def fieldValue = fieldNode.text()
        propStep.setPropertyValue(fieldName, fieldValue)
    }
}

注意事项

  • 脚本中填写的步骤名需要和项目内实际步骤名完全一致,区分大小写
  • 执行时按顺序运行JDBC步骤→Groovy脚本步骤即可完成属性同步
  • 后续JDBC查询新增返回字段无需修改脚本,会自动识别写入Properties步骤

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 13:51:03