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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 01:37:33