soapUI中如何从测试步骤提取请求?Groovy脚本报错求解
soapUI提取测试步骤请求内容的实现方案
报错原因
运行脚本报MissingPropertyException由三个问题直接导致:
- 脚本中写的
test step存在空格,Groovy无法识别这个带空格的非法标识符 - 没有通过soapUI内置的上下文对象获取测试步骤,脚本运行上下文里不存在直接可用的
testStep对象 - 原脚本直接取
properties["Request"].value的写法不符合soapUI的属性调用规范,容易触发空指针
正确实现代码
你的目标测试步骤名称为RESTRequest,如果执行脚本的Groovy步骤和该REST请求步骤在同一个测试用例下,直接使用以下脚本即可:
// 按名称获取目标测试步骤对象 def restStep = testRunner.testCase.getTestStepByName("RESTRequest") // 提取步骤配置的请求模板内容 def extRequest = restStep.getPropertyValue("Request") // 打印结果到日志控制台方便校验 log.info "提取到的请求模板内容:{}", extRequest
如果需要提取实际发送时替换完所有参数、属性占位符的真实请求内容,使用以下写法:
def restStep = testRunner.testCase.getTestStepByName("RESTRequest") // 获取实际发起请求时的完整报文内容 def realRequest = restStep.testRequest.requestContent log.info "实际发送的请求内容:{}", realRequest
注意事项
- 如果目标测试步骤和当前Groovy脚本不在同一个测试用例,需要先定位到对应测试用例再取步骤:
// 先获取目标测试用例,再获取步骤 def targetCase = testRunner.testCase.testSuite.getTestCaseByName("目标测试用例名称") def restStep = targetCase.getTestStepByName("RESTRequest") - 所有属性取值优先使用
getPropertyValue()方法,不要直接操作properties集合,避免属性不存在时抛出空指针异常
内容的提问来源于stack exchange,提问作者Santhoshini V
相关产品推荐
相关产品推荐

