如何在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....
- 字段大小写不匹配:你提到响应里是
policyID(大写D),但代码里写的是json.policyId(小写d),Groovy对字段名大小写敏感,这会直接导致找不到字段报空指针错误。 - 测试用例对象引用错误:
context.testCase2这种写法完全不对,SoapUI里没有这个属性,要获取测试用例得通过正确的对象路径。 - 代码未完成:
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
相关产品推荐
相关产品推荐

