Groovy 如何在SoapUI中传递第一步响应名称并将其用作第二步输入
如何获取第一步响应名称并将其用作第二步输入Groovy 如何在SoapUI中传递第一步响应名称并将其用作第二步输入,groovy,soapui,Groovy,Soapui,如何获取第一步响应名称并将其用作第二步输入 第一步按国家代码获取国家(我输入“in”,我应该获取国家名称“India”) 我想使用国家名称“India”作为第二步的输入国家名称 如何使用groovy 我尝试了以下代码,但它不起作用 在这种情况下,您可以如下修改groovy def gUtils = new com.eviware.soapui.support.GroovyUtils(context) def holder = gUtils.getXmlHolder("GetCountryByC
在这种情况下,您可以如下修改groovy
def gUtils = new com.eviware.soapui.support.GroovyUtils(context)
def holder = gUtils.getXmlHolder("GetCountryByCountryCode#Response")
def xml = holder.getNodeValue("//*:GetCountryByCountryCodeResult")
def cdataSet = gUtils.getXmlHolder(xml)
def country = cdataSet.getNodeValue("//*:Table//*:name")
testRunner.testCase.setPropertyValue("country", country)
并将测试用例属性“country”映射到下一个服务的输入。测试用例中不需要单独的Groovy脚本测试步骤 在您的情况下,首先解析响应并提取
CDATA
中的字符串。再次解析它以获得与代码匹配的计数名称
在第一步(即soap请求步骤)中,使用以下代码添加脚本断言
:
//Check if there is repose
assert context.response, 'Response is empty or null'
def lookpcode = context.expand('${#TestCase#CountryCode}')
def dataSet = new XmlSlurper().parseText(context.response).'**'.find{ it.name() == 'GetCountryByCountryCodeResult')} as String
def countryName = new XmlSlurper().parseText(dataSet).'**'.find{ it.name() == 'countrycode' && it == lookpcode)}.parent().name.text()
log.info "Country name is ${countryName} where code is ${lookpcode}"
assert countryName, 'Country name empty or null'
context.testCase.setPropertyValue('COUNTRY_NAME', countryName)
在下一步中,在需要国家名称的地方使用property expansion,即,
${{TestCase}国家名称}
简单的解决方案是将property Transfer步骤添加到其中-由Helen Kosova发布
链接如下:
Aa定期财产转让步骤
源(步骤):GetCountryByCountryCode
属性:响应
路径语言:XPath
表达方式:
(saxon:parse(//:GetCountryByCountryCodeResult))//表/名称
或者只是
(saxon:parse(//:GetCountryByCountryCodeResult))//名称
(看起来saxon默认选择第一个匹配节点)这不起作用,因为
表
数据位于CDATA
中。
//Check if there is repose
assert context.response, 'Response is empty or null'
def lookpcode = context.expand('${#TestCase#CountryCode}')
def dataSet = new XmlSlurper().parseText(context.response).'**'.find{ it.name() == 'GetCountryByCountryCodeResult')} as String
def countryName = new XmlSlurper().parseText(dataSet).'**'.find{ it.name() == 'countrycode' && it == lookpcode)}.parent().name.text()
log.info "Country name is ${countryName} where code is ${lookpcode}"
assert countryName, 'Country name empty or null'
context.testCase.setPropertyValue('COUNTRY_NAME', countryName)