我是SoapUI的新手,刚刚配置了一个非常简单的MockService.是否可以操纵响应,以便对特定请求动态构建响应元素?
场景1:
请求:
<record>
<identifier>ID1</identifier>
</record>
Run Code Online (Sandbox Code Playgroud)
响应:
<response>
<child1>child 1</child1>
</response>
Run Code Online (Sandbox Code Playgroud)
场景2:
请求:
<record>
<identifier>ID2</identifier>
</record>
Run Code Online (Sandbox Code Playgroud)
响应:
<response>
<child2>child 2</child2>
</response>
Run Code Online (Sandbox Code Playgroud)
这是一个简单的测试,我不需要它做任何超过上述.我目前正在做以下事情,产生我想要的结果,但由于我是全新的,我相信有更好的选择:
响应:
<response>
${dynElement}
</response>
Run Code Online (Sandbox Code Playgroud)
Groovy脚本:
def groovyUtils = new com.eviware.soapui.support.GroovyUtils(context)
def holder = groovyUtils.getXmlHolder(mockRequest.requestContent)
def reqRef = String.valueOf(holder.getNodeValue("//identifier"))
def child1Text = "<child1>child 1</child1>"
def child2Text = "<child2>child 2</child2>"
if (reqRef == "ID1") {
context.setProperty("dynElement", child1Text)
} else if (reqRef == "ID2") {
context.setProperty("dynElement", child2Text)
}
Run Code Online (Sandbox Code Playgroud)
我使用“预设响应”和 xpath 查询来完成此操作。为此,您将在模拟服务中设置一系列调度处理程序,以将请求与响应相匹配。假设您有 Request1、Request2、Response1、Response2。使用“查询匹配”调度方法来匹配 XPATH 表达式。在那场比赛中,返回所需的响应。即,如果您在 xpath 中找到 ID1,则返回预设的 Response1。
此外,PRO 版本在 XPATH 方面表现出色,因此您无需手动编写代码。即它可以查看您想要触发的内容(在您的情况下为 ID1)上的响应单击,并为您构建 XPATH 表达式。我基于此申请了 PRO 许可证。目前正在等待预算...
IMO,开始比弄清楚 groovy 容易得多。
克里斯
| 归档时间: |
|
| 查看次数: |
14761 次 |
| 最近记录: |