如何在SoapUI中通过XPath从XML响应中保存全局属性?

时间:2017-02-14 15:30:23

标签: groovy soapui

我加入了SoapUI作为SOAP客户端的团队,并且存在生成访问令牌的身份验证步骤。应使用此令牌填充每个后续请求。

这意味着我用新手动替换旧的访问令牌。

首先我通过File => Preference创建全局属性,这使我每天只能执行一次编辑,但我想完全摆脱任何手动步骤。

我不完全了解SoapUI,我们不使用测试套件/案例。

如何创建一键式执行请求,通过XPath从响应中提取值并将其保存在全局属性中?

1 个答案:

答案 0 :(得分:1)

我遇到的问题是缺乏如何使用SoapUI的知识。

首先,我在项目下创建了 TestSuit 。作为 TestSuit 的第一步,我做了SOAP请求。

可以为 TestSuit 输入 TearDown脚本

def token = context.expand('${SessionCreateRQ#Response#//*:BinarySecurityToken/text()}')
com.eviware.soapui.model.propertyexpansion.PropertyExpansionUtils.globalProperties.setPropertyValue('sectoken', token)

或者像这样:

def token = context.expand('${SessionCreateRQ#Response#//*:BinarySecurityToken/text()}')
com.eviware.soapui.SoapUI.globalProperties.setPropertyValue('sectoken', token)

但是后续运行不会更改全局变量的值,除非我从File => Preference对话框中删除它。

所以我添加第二步 Property Transfer 在GUI中我为第一个请求选择名称,属性响应,路径语言 XPath 并输入表达式:

//*:BinarySecurityToken/text()

作为目标,我选择 Global ,作为属性我的变量名:

enter image description here

现在,当我运行 TestSuit ${#Global#sectoken}填充新值并可在任何SoapUI项目中访问时!!