如何传递第一步响应名称并将其用作SoapUI中的第二步输入

时间:2017-04-06 19:31:04

标签: groovy soapui

如何获取第一步响应名称并将其用作第二步输入

  1. 第一步获取国家/地区代码(我输入“in”,我应该获得国家名称“India”)
  2. 我想将国家名称“India”用作第二步的输入国家/地区名称 我如何用groovy做到这一点?
  3. 我尝试以下代码,但它不起作用 enter image description here

    def def responseCountry = testRunner.testCase.testSteps['GetCountryByCountryCode'].getPropertyValue("Name")
    
    def property = responseCountry.getProperty( "name" ) 
    

3 个答案:

答案 0 :(得分:0)

在这种情况下,你可以修改你的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)

并映射testCase属性" country"给你下一次服务的输入。

答案 1 :(得分:0)

您的测试用例中无需单独的Groovy Script测试步骤。

在您的情况下,首先解析响应并提取CDATA内的字符串。再次解析它以获得与代码匹配的计数名称。

在第一步是肥皂请求步骤,使用以下代码添加Script Assertion

//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)

在下一步中,使用属性扩展,您需要国家/地区名称,即${#TestCase#COUNTRY_NAME}

答案 2 :(得分:0)

简单的解决方案是添加了物业转移步骤 - 由Helen Kosova发布

链接在这里:

https://community.smartbear.com/t5/SoapUI-Open-Source/How-to-get-response-property-value-and-use-it-as-next-step-input/m-p/139502/highlight/false#M23749

Aa常规财产转移步骤

来源(步骤):GetCountryByCountryCode 财产:回应 路径语言:XPath 表达: (撒克逊:解析(// :GetCountryByCountryCodeResult))// {表{3}} /名称 要不就 (撒克逊:解析(// :GetCountryByCountryCodeResult))//名 (似乎撒克逊人默认选择第一个匹配节点)