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

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

  • 第一步按国家代码获取国家(我输入“in”,我应该获取国家名称“India”)
  • 我想使用国家名称“India”作为第二步的输入国家名称 如何使用groovy
  • 我尝试了以下代码,但它不起作用


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