求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
相关产品推荐
相关产品推荐

