SOAP UI跨脚本调用时getPropertyValue请求占位符未填充的解决问询
解决SOAP请求跨脚本调用时占位符未填充的问题
核心问题原因
getPropertyValue('Request')获取的是未经变量替换的原始请求模板,因此占位符不会被自动填充- 跨脚本调用时,当前脚本的
context属于调用方的上下文,并非目标测试步骤的上下文,导致context.expand('${MASTER_MDR_REQUEST_CONTAINER#Request}')无法定位到目标请求内容,返回null
具体解决方案
方法一:通过TestRunner全局展开变量
先定位到目标测试步骤,获取原始请求模板后,用testRunner.expand()处理——该方法可识别套件、用例、全局级别的所有变量:
// 1. 定位目标SOAP测试步骤 def targetTestSuite = testRunner.testCase.testSuite def targetTestCase = targetTestSuite.getTestCaseByName("你的目标测试用例名称") def targetTestStep = targetTestCase.getTestStepByName("MASTER_MDR_REQUEST_CONTAINER") // 2. 获取原始请求并展开变量 def rawRequest = targetTestStep.getPropertyValue('Request') def filledRequest = testRunner.expand(rawRequest) // 输出或使用填充后的请求 log.info(filledRequest)
方法二:使用目标步骤的上下文展开(适配局部变量)
如果目标测试步骤有专属的局部变量,用步骤自身的context展开会更精准:
// 先定位到目标测试步骤(代码同上) def rawRequest = targetTestStep.getPropertyValue('Request') def filledRequest = targetTestStep.context.expand(rawRequest)
额外提示
如果需要先触发目标测试步骤执行,再获取实际发送的请求内容,可使用以下代码:
// 执行目标测试步骤 targetTestStep.run(testRunner, context) // 获取执行后已填充变量的实际请求 def sentRequest = targetTestStep.getPropertyValue('Request')
内容的提问来源于stack exchange,提问作者Armen Cholakian
相关产品推荐
相关产品推荐

