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

求SoapUI中Groovy提取MockService响应RequestID并写入文件的代码

在SoapUI中用Groovy提取MockService响应的RequestID并写入文件

1. 提取RequestID并写入文件

你可以在MockService的响应脚本(或调用Mock服务后的测试步骤脚本)中添加以下代码,完成提取与写入操作:

// 1. 获取MockService的响应内容(若在测试步骤中,替换为对应步骤的响应获取方式)
def mockResponseContent = context.responseContent

// 2. 用正则匹配提取RequestID
def pattern = /<ref:ReferState RequestID\s*=\s*"(\d+)"/
def matcher = (mockResponseContent =~ pattern)
if (matcher.find()) {
    def requestId = matcher.group(1)
    log.info "提取到的RequestID: ${requestId}"

    // 3. 写入指定文本文件(替换为你实际的文件路径)
    def filePath = "C:/soapui_request_id.txt"
    def file = new File(filePath)
    file.write(requestId) // 覆盖写入,若需追加内容改用append()
} else {
    log.error "未匹配到RequestID标签"
}

2. 在另一服务中读取并复用RequestID

在需要复用该ID的请求测试步骤的前置脚本中,添加以下代码读取文件中的ID:

// 读取文件中的RequestID
def filePath = "C:/soapui_request_id.txt"
def file = new File(filePath)
if (file.exists()) {
    def requestId = file.text.trim()
    log.info "读取到的RequestID: ${requestId}"

    // 将ID设置到请求的对应位置(根据实际场景选择方式)
    // 方式1:存入测试用例属性,供请求XML中的占位符调用
    context.testCase.setPropertyValue("REQUEST_ID", requestId)
    // 方式2:直接替换请求XML中的占位符(假设请求里有${REQUEST_ID})
    context.requestContent = context.requestContent.replace("${REQUEST_ID}", requestId)
} else {
    log.error "RequestID存储文件不存在"
}

注意事项

  • 替换代码中的文件路径为实际存储路径,确保SoapUI拥有该路径的读写权限
  • 若RequestID包含非数字字符,将正则中的\d+替换为[^"]+即可适配
  • 在MockService响应脚本中,context.responseContent就是当前生成的响应内容,可直接调用

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 09:37:12