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'