Forum Discussion

Aman85's avatar
Aman85
Occasional Contributor
8 years ago
Solved

Complex Assertion parameterization

Hi,

 

How do i assert the airport name where airport code is ANR from the response below.I do not want to use the index but a dynamic value.

Say there are 10 records listed.How do i assert which belongs to airport code ANR

 

<GetAirportInformationByCountryResult><![CDATA[<NewDataSet>
<Table>
<AirportCode>ANR</AirportCode>
<CityOrAirportName>ANTWERP DEURNE</CityOrAirportName>
<Country>Belgium</Country>
<CountryAbbrviation>BE</CountryAbbrviation>
<CountryCode>409</CountryCode>
<GMTOffset>-1</GMTOffset>
<RunwayLengthFeet>4839</RunwayLengthFeet>
</Table>
<Table>
<AirportCode>GNE</AirportCode>
<CityOrAirportName>GHENT</CityOrAirportName>
<Country>Belgium</Country>
<CountryAbbrviation>BE</CountryAbbrviation>
<CountryCode>409</CountryCode>
<GMTOffset>-1</GMTOffset>
<RunwayLengthFeet>2789</RunwayLengthFeet>
<RunwayElevationFeet>34</RunwayElevationFeet>

 

I am using following code to get Airport name value:

import com.eviware.soapui.support.XmlHolder

def resXmlHolder= new XmlHolder(messageExchange.getResponseContentAsXml())
def cData= resXmlHolder.getNodeValue("//*:GetAirportInformationByCountryResult")
def cDataXmlHolder= new XmlHolder(cData)

def CityOrAirportName= cDataXmlHolder.getNodeValue("//CityOrAirportName")

log.info (CityOrAirportName)

  • Looks you are using Script Assertion.

     

    Here is the script:

     

    //Define expected airport name
    def expAirportName = 'ANTWERP DEURNE'
    
    def dataSet = new XmlSlurper().parseText(context.response).'**'.find{ it.name() == 'GetAirportInformationByCountryResult'} as String
    def airportName = new XmlSlurper().parseText(dataSet).'**'.find{ it.name() == 'AirportCode' && it == 'ANR'}.parent().CityOrAirportName.text()
    log.info "Airport name is ${airportName} where code is ANR"
    
    assert expAirportName == airportName, 'Does not match with expected value'

     

  • nmrao's avatar
    nmrao
    Icon for Champion Level 2 rankChampion Level 2

    Looks you are using Script Assertion.

     

    Here is the script:

     

    //Define expected airport name
    def expAirportName = 'ANTWERP DEURNE'
    
    def dataSet = new XmlSlurper().parseText(context.response).'**'.find{ it.name() == 'GetAirportInformationByCountryResult'} as String
    def airportName = new XmlSlurper().parseText(dataSet).'**'.find{ it.name() == 'AirportCode' && it == 'ANR'}.parent().CityOrAirportName.text()
    log.info "Airport name is ${airportName} where code is ANR"
    
    assert expAirportName == airportName, 'Does not match with expected value'

     

    • Aman85's avatar
      Aman85
      Occasional Contributor

      Thank you nmrao,

      This worked just fine :)

    • Aman85's avatar
      Aman85
      Occasional Contributor

       

      • HKosova's avatar
        HKosova
        Icon for Alumni rankAlumni

        Which version of SoapUI are you using? It works for me in SoapUI 5.3.0.

         

        Make sure you specify the node name with the namespace prefix:

        //*:GetAirportInformationByCountryResult

        not

        //GetAirportInformationByCountryResult

         

        If this does not help, please post the exact response contents and the full error message.