在SoapUI Groovy步骤中使用xpath检索值

时间:2017-08-21 15:18:34

标签: groovy soapui

我需要将操作 GET ISM 的输出传送到另一个操作SET ESM的输入。

我想在此标签中恢复talon = 603090100042390 (这是GET ISM的回复):

<privateUserId>603090100042390@xxxxxxxxxxxxxx</privateUserId>

我使用这个脚本:

groovyUtils = new com.eviware.soapui.support.GroovyUtils(context)
holder = groovyUtils.getXmlHolder("GET ISM#Response")
privateUserId = holder.getNodeValue( "//privateUserId" )
assert privateUserId != null
assert privateUserId.length() > 0
latlonNode = groovyUtils.getXmlHolder(privateUserId)
latlon = latlonNode.getNodeValue("//privateUserId")
log.info(latlon)
assert latlon != null
context["latlon"] = latlon

为SET ESM输入了talon。

我有这个错误:

  

断言失败:断言privateUserId!= null | | null false断言失败:断言privateUserId!= null | |第0行的空错误:

但我不知道为什么第4行出现问题。

我想解决这个问题。谢谢

1 个答案:

答案 0 :(得分:2)

根据您的问题,不清楚响应中是否有任何名称空间。可能这可能是获得null的原因之一。

您可以使用Script Assertion作为第一步。

assert context.response, 'Response is empty or null'
def pId = new XmlSlurper().parseText(context.response).'**'.find{it.name() == 'privateUserId'}.text()

log.info "privateUserId value : $pId"
assert pId, "Value of privateUserId is empty or null"

def userId = pId?.substring(0, pId?.indexOf('@'))
context.testCase.setPropertyValue('USERID', userId)

在下一步中,只要需要提取用户ID,请使用${#TestCase#USERID}