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

如何在SOAPUI中将REST POST响应的JSON值传递到REST PUT请求

解决SoapUI中Groovy脚本传递REST响应policyID的问题

先梳理下你的场景:你在SoapUI里测试REST服务,第一个测试步骤返回带policyID的JSON响应,需要把这个值传给另一个测试步骤的请求,但写的Groovy脚本报错了。先看你贴的代码,这里有几个明显的问题,我逐个给你修正:

你的原始代码问题点

import groovy.json.* 
def response = context.expand('${CreateApplication#Response}') 
def json = new JsonSlurper().parseText(response) 
--- 错误行 
log.info json.policyId 
context.testCase2.setPropertyValue("id",json....
  1. 字段大小写不匹配:你提到响应里是policyID(大写D),但代码里写的是json.policyId(小写d),Groovy对字段名大小写敏感,这会直接导致找不到字段报空指针错误。
  2. 测试用例对象引用错误:context.testCase2这种写法完全不对,SoapUI里没有这个属性,要获取测试用例得通过正确的对象路径。
  3. 代码未完成:json....这里明显没写完,没法正确传递值。

修正后的脚本(分两种场景)

场景1:目标测试步骤和当前步骤在同一个测试用例里

这是最常见的情况,把值存在当前测试用例的属性里,其他步骤直接引用:

import groovy.json.JsonSlurper

// 获取第一个测试步骤的响应内容
def responseContent = context.expand('${CreateApplication#Response}')

// 解析JSON响应
def jsonParser = new JsonSlurper()
def responseJson = jsonParser.parseText(responseContent)

// 注意字段名是policyID(大写D),和响应里的保持一致
def policyId = responseJson.policyID

// 打印日志确认值是否正确,方便调试
log.info "成功获取到policyID: ${policyId}"

// 将值设置到当前测试用例的自定义属性中
context.testCase.setPropertyValue("targetPolicyID", policyId.toString())

之后在其他测试步骤的请求里,用${#TestCase#targetPolicyID}就能引用这个值了。

场景2:目标测试步骤在同一个测试套件的另一个测试用例里

如果要跨测试用例传值,需要先获取目标测试用例对象:

import groovy.json.JsonSlurper

// 获取响应并解析
def responseContent = context.expand('${CreateApplication#Response}')
def jsonParser = new JsonSlurper()
def responseJson = jsonParser.parseText(responseContent)
def policyId = responseJson.policyID

log.info "成功获取到policyID: ${policyId}"

// 替换成你的目标测试用例名称,比如"GetPolicyDetails"
def targetTestCase = context.testCase.testSuite.testCases["你的目标测试用例名称"]

// 将值设置到目标测试用例的属性中
targetTestCase.setPropertyValue("targetPolicyID", policyId.toString())

之后在目标测试用例的请求里,用${#TestCase#targetPolicyID}引用即可。

额外排查建议

  • 先去SoapUI的CreateApplication步骤里查看响应结构,确认policyID是不是嵌套在某个对象里(比如data.policyID),如果是,要改成responseJson.data.policyID
  • 如果响应是JSON数组(比如[{"policyID": "P123"}]),要取第一个元素的字段:responseJson[0].policyID
  • 运行脚本后看SoapUI的日志面板,里面会有具体的错误信息(比如空指针、找不到测试用例),能帮你快速定位问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:56:11