2017-02-20 7 views
1

Ниже приведен табличный отклик моего запроса GetCountry.Как передать значение свойства из ответа таблицы, используя передачу свойств в SoapUI?

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <soap:Body> 
     <GetCitiesByCountryResponse xmlns="http://www.webserviceX.NET"> 
     <GetCitiesByCountryResult><![CDATA[<NewDataSet> 
    <Table> 
    <Country>British Indian Ocean Territory</Country> 
    <City>Diego Garcia</City> 
    </Table> 
    <Table> 
    <Country>India</Country> 
    <City>Ahmadabad</City> 
    </Table> 
    <Table> 
</NewDataSet>]]></GetCitiesByCountryResult> 
     </GetCitiesByCountryResponse> 
    </soap:Body> 
</soap:Envelope> 

Отсюда я должен скопировать значения, например: Country = India и City = Ahmadabad моей целевой запрос. Как передать эти значения с помощью метода передачи свойств? Может ли кто-нибудь помочь мне в формате?

+0

является названием страны, фиксированных значения названия города? – Rao

+0

Да, название страны и города фиксировано –

ответ

2

Я думаю, что это невозможно с передачей собственности. Попробуйте использовать ниже «Script Assertion», который позволит решить вашу проблему:

Определить следующие пользовательские свойства на вашем уровне тестового случая с требуемой страной и названием города

  1. Названия недвижимости - CountryName и ценностью как India
  2. Название недвижимости - CityName и значение, как Ahamadabad

Добавить скрипт утверждение. Как добавить утверждение скрипта в пользовательском интерфейсе SOAP, см. Link.

def searchData = { data, element -> 
    def parsedData = new XmlSlurper().parseText(data) 
    parsedData.'**'.find {it.name() == element} as String 
} 

//Closure to check the xpath 
def searchByXpath = {data, xpath -> 
    def holder = new com.eviware.soapui.support.XmlHolder(data) 
    holder.getNodeValue(xpath) 
} 
assert context.response, "Response is empty or null" 
//Gets the CDATA part of the response 
def cdata = searchData(context.response, 'GetCitiesByCountryResult') 

//Gets the xpath result 
def cityName = context.expand('${#TestCaes#CityName}') 
def countryName = context.expand('${#TestCaes#CountryName}') 
def result = searchByXpath(cdata, "exists(//Table[City = '$cityName' and Country = '$countryName'])") 
log.info "Is city ${cityName} and Country ${countryName} exist in the table: ${result}" 
assert result == 'true', "${cityName} and ${countryName} does not exist in the result table" 

Теперь, чтобы получить доступ к выше заданным свойствам в следующем запросе, чтобы упомянуть, как определено ниже (с помощью расширения свойств)

<web:CountryName>${#TestCase#CountryName}</web:CountryName> 
<web:CityName>${#TestCase#CityName}</web:CityName> 
+0

У вас есть идея, можно ли это сделать с помощью Groovy Script ?? –

+0

Обновлен ответ с запрошенной информацией. Пожалуйста, пройдите через него и попробуйте. –