2016-12-04 1 views
0

단순한 테스트를위한 조건을 생성 할 수 없기 때문에 SOAP UI 시작 튜토리얼에서 놀고있는 동안 나는 고생했다.SOAP UI의 테스트 케이스에서 노드를 얻는 방법 XPATH

<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>Belarus</Country> 
     <City>Riga Airport</City> 
     </Table> 
     <Table> 
     <Country>Mauritius</Country> 
     <City>Plaisance Mauritius</City> 
     </Table> 
     <Table> 
     <Country>Mauritius</Country> 
     <City>Rodrigues</City> 
     </Table> 
     <Table> 
     <Country>Cyprus</Country> 
     <City>Ercan</City> 
     </Table> 
     <Table> 
     <Country>Cyprus</Country> 
     <City>Larnaca Airport</City> 
     </Table> 
     <Table> 
     <Country>Cyprus</Country> 
     <City>Athalassa</City> 
     </Table> 
     <Table> 
     <Country>Cyprus</Country> 
     <City>Paphos Airport</City> 
     </Table> 
     <Table> 
     <Country>Cyprus</Country> 
     <City>Akrotiri</City> 
     </Table> 
     <Table> 
     <Country>Austria</Country> 
     <City>Niederosterreich/Lugplatz Vos</City> 
     </Table> 
     <Table> 
     <Country>Austria</Country> 
     <City>Graz-Thalerhof-Flughafen</City> 
     </Table> 
     <Table> 
     <Country>Austria</Country> 
     <City>Innsbruck-Flughafen</City> 
     </Table> 
     <Table> 
     <Country>Austria</Country> 
     <City>Klagenfurt-Flughafen</City> 
     </Table> 
     <Table> 
     <Country>Austria</Country> 
     <City>Linz/Hoersching-Flughafen</City> 
     </Table> 
     <Table> 
     <Country>Austria</Country> 
     <City>Salzburg-Flughafen</City> 
     </Table> 
     <Table> 
     <Country>Austria</Country> 
     <City>Wien/Schwechat-Flughafen</City> 
     </Table> 
     <Table> 
     <Country>Austria</Country> 
     <City>Aigen Im Ennstal</City> 
     </Table> 
     <Table> 
     <Country>Austria</Country> 
     <City>Horsching Aus-Afb</City> 
     </Table> 
     <Table> 
     <Country>Austria</Country> 
     <City>Schwaz Heliport</City> 
     </Table> 
     <Table> 
     <Country>Austria</Country> 
     <City>Tulln</City> 
     </Table> 
     <Table> 
     <Country>Austria</Country> 
     <City>Zeltweg</City> 
     </Table> 
     <Table> 
     <Country>Russian Federation</Country> 
     <City>Jakutsk</City> 
     </Table> 
     <Table> 
     <Country>Russian Federation</Country> 
     <City>Cul'Man</City> 
     </Table> 
     <Table> 
     <Country>Russian Federation</Country> 
     <City>Ekimchan</City> 
     </Table> 
     <Table> 
     <Country>Russian Federation</Country> 
     <City>Habarovsk</City> 
     </Table> 
     <Table> 
     <Country>Russian Federation</Country> 
     <City>Troickoe</City> 
     </Table> 
     <Table> 
     <Country>Russian Federation</Country> 
     <City>Anadyr</City> 
     </Table> 
     <Table> 
     <Country>Russian Federation</Country> 
     <City>Buhta Providenja</City> 
     </Table> 
     <Table> 
     <Country>Russian Federation</Country> 
     <City>Magadan</City> 
     </Table> 
     <Table> 
     <Country>Russian Federation</Country> 
     <City>Petropavlovsk-Kamchatskij</City> 
     </Table> 
     <Table> 
     <Country>Russian Federation</Country> 
     <City>Juzhno-Sahalinsk</City> 
     </Table> 
     <Table> 
     <Country>Russian Federation</Country> 
     <City>Vladivostok</City> 
     </Table> 
     <Table> 
     <Country>Russian Federation</Country> 
     <City>Chita</City> 
     </Table> 
     <Table> 
     <Country>Russian Federation</Country> 
     <City>Irkutsk</City> 
     </Table> 
     <Table> 
     <Country>Russian Federation</Country> 
     <City>Ust'Ordynskij</City> 
     </Table> 
     <Table> 
     <Country>Russian Federation</Country> 
     <City>Bodajbo</City> 
     </Table> 
     <Table> 
     <Country>Russian Federation</Country> 
     <City>Kirensk</City> 
     </Table> 
     <Table> 
     <Country>Russian Federation</Country> 
     <City>Nizhneudinsk</City> 
     </Table> 
     <Table> 
     <Country>Russian Federation</Country> 
     <City>Horinsk</City> 
     </Table> 
     <Table> 
     <Country>Russian Federation</Country> 
     <City>Ulan-Ude</City> 
     </Table> 
     <Table> 
     <Country>Russian Federation</Country> 
     <City>Arhangel'Sk</City> 
     </Table> 
     <Table> 
     <Country>Russian Federation</Country> 
     <City>Kotlas</City> 
     </Table> 
     <Table> 
     <Country>Russian Federation</Country> 
     <City>St. Peterburg</City> 
     </Table> 
     <Table> 
     <Country>Russian Federation</Country> 
     <City>Murmansk</City> 
     </Table> 
     <Table> 
     <Country>Russian Federation</Country> 
     <City>Velikie Luki</City> 
     </Table> 
     <Table> 
     <Country>Russian Federation</Country> 
     <City>Tot'Ma</City> 
     </Table> 
     <Table> 
     <Country>Russian Federation</Country> 
     <City>Vologda</City> 
     </Table> 
     <Table> 
     <Country>Belarus</Country> 
     <City>Vitebsk</City> 
     </Table> 
     <Table> 
     <Country>Belarus</Country> 
     <City>Minsk</City> 
     </Table> 
     <Table> 
     <Country>Russian Federation</Country> 
     <City>Barnaul</City> 
     </Table> 
     <Table> 
     <Country>Russian Federation</Country> 
     <City>Enisejsk</City> 
     </Table> 
     <Table> 
     <Country>Russian Federation</Country> 
     <City>Novosibirsk</City> 
     </Table> 
     <Table> 
     <Country>Russian Federation</Country> 
     <City>Krasnodar</City> 
     </Table> 
     <Table> 
     <Country>Russian Federation</Country> 
     <City>Mineral'Nye Vody</City> 
     </Table> 
     <Table> 
     <Country>Russian Federation</Country> 
     <City>Rostov-Na-Donu</City> 
     </Table> 
     <Table> 
     <Country>Russian Federation</Country> 
     <City>Adler</City> 
     </Table> 
     <Table> 
     <Country>Russian Federation</Country> 
     <City>Elista</City> 
     </Table> 
     <Table> 
     <Country>Russian Federation</Country> 
     <City>Volgograd</City> 
     </Table> 
     <Table> 
     <Country>Russian Federation</Country> 
     <City>Hanty-Mansijsk</City> 
     </Table> 
     <Table> 
     <Country>Russian Federation</Country> 
     <City>Surgut</City> 
     </Table> 
     <Table> 
     <Country>Russian Federation</Country> 
     <City>Ekaterinburg</City> 
     </Table> 
     <Table> 
     <Country>Russian Federation</Country> 
     <City>Brjansk</City> 
     </Table> 
     <Table> 
     <Country>Russian Federation</Country> 
     <City>Moscow/Sheremet'Ye</City> 
     </Table> 
     <Table> 
     <Country>Russian Federation</Country> 
     <City>Tver</City> 
     </Table> 
     <Table> 
     <Country>Russian Federation</Country> 
     <City>Voronez</City> 
     </Table> 
     <Table> 
     <Country>Russian Federation</Country> 
     <City>Moscow/Vnukovo</City> 
     </Table> 
     <Table> 
     <Country>Russian Federation</Country> 
     <City>Ust', Kulom</City> 
     </Table> 
     <Table> 
     <Country>Russian Federation</Country> 
     <City>Syktyvkar</City> 
     </Table> 
     <Table> 
     <Country>Russian Federation</Country> 
     <City>Penza</City> 
     </Table> 
     <Table> 
     <Country>Russian Federation</Country> 
     <City>Samara</City> 
     </Table> 
     <Table> 
     <Country>Brunei Darussalam</Country> 
     <City>Brunei Airport</City> 
     </Table> 
     <Table> 
     <Country>Australia</Country> 
     <City>Archerfield Aerodrome</City> 
     </Table> 
     <Table> 
     <Country>Australia</Country> 
     <City>Amberley Aerodrome</City> 
     </Table> 
     <Table> 
     <Country>Australia</Country> 
     <City>Alice Springs Aerodrome</City> 
     </Table> 
     <Table> 
     <Country>Australia</Country> 
     <City>Brisbane Airport M. O</City> 
     </Table> 
     <Table> 
     <Country>Australia</Country> 
     <City>Coolangatta Airport Aws</City> 
     </Table> 
     <Table> 
     <Country>Australia</Country> 
     <City>Cairns Airport</City> 
     </Table> 
     <Table> 
     <Country>Australia</Country> 
     <City>Charleville Airport</City> 
     </Table> 
     <Table> 
     <Country>Australia</Country> 
     <City>Gladstone</City> 
     </Table> 
     <Table> 
     <Country>Australia</Country> 
     <City>Longreach Airport</City> 
     </Table> 
     <Table> 
     <Country>Australia</Country> 
     <City>Mount Isa Amo</City> 
     </Table> 
     <Table> 
     <Country>Australia</Country> 
     <City>Mackay Mo</City> 
     </Table> 
     <Table> 
     <Country>Australia</Country> 
     <City>Oakey Aerodrome</City> 
     </Table> 
     <Table> 
     <Country>Australia</Country> 
     <City>Proserpine Airport</City> 
     </Table> 
     <Table> 
     <Country>Australia</Country> 
     <City>Rockhampton Airport</City> 
     </Table> 
     <Table> 
     <Country>Australia</Country> 
     <City>Broome Airport</City> 
     </Table> 
     <Table> 
     <Country>Australia</Country> 
     <City>Townsville Amo</City> 
     </Table> 
     <Table> 
     <Country>Australia</Country> 
     <City>Weipa City</City> 
     </Table> 
     <Table> 
     <Country>Australia</Country> 
     <City>Gove Airport</City> 
     </Table> 
     <Table> 
     <Country>Australia</Country> 
     <City>Tennant Creek Airport</City> 
     </Table> 
     <Table> 
     <Country>Australia</Country> 
     <City>Yulara Aws</City> 
     </Table> 
     <Table> 
     <Country>Australia</Country> 
     <City>Albury Airport</City> 
     </Table> 
     <Table> 
     <Country>Australia</Country> 
     <City>Devonport East</City> 
     </Table> 
     <Table> 
     <Country>Australia</Country> 
     <City>Goldstream Aws</City> 
     </Table> 
     <Table> 
     <Country>Australia</Country> 
     <City>East Sale Aerodrome</City> 
     </Table> 
     <Table> 
     <Country>Australia</Country> 
     <City>Hobart Airport</City> 
     </Table> 
     <Table> 
     <Country>Australia</Country> 
     <City>Launceston Airport</City> 
     </Table> 
     <Table> 
     <Country>Australia</Country> 
     <City>Laverton Aerodrome</City> 
     </Table> 
     <Table> 
     <Country>Australia</Country> 
     <City>Moorabbin Airport Aws</City> 
     </Table> 
     <Table> 
     <Country>Australia</Country> 
     <City>Mount Gambier Aerodrome</City> 
     </Table> 
     <Table> 
     <Country>Australia</Country> 
     <City>Mildura Airport</City> 
     </Table> 
     <Table> 
     <Country>Australia</Country> 
     <City>Melbourne Airport</City> 
     </Table> 
     <Table> 
     <Country>Australia</Country> 
     <City>Macquarie Island</City> 
     </Table> 
     <Table> 
     <Country>Australia</Country> 
     <City>Wynyard West</City> 
     </Table> 
     <Table> 
     <Country>Australia</Country> 
     <City>Adelaide Airport</City> 
     </Table> 
     <Table> 
     <Country>Australia</Country> 
     <City>Albany Airport</City> 
     </Table> 
     <Table> 
     <Country>Australia</Country> 
     <City>Broken Hill Patton Street</City> 
     </Table> 
     <Table> 
     <Country>Australia</Country> 
     <City>Ceduna Airport</City> 
     </Table> 
     <Table> 
     <Country>Australia</Country> 
     <City>Derby</City> 
     </Table> 
     <Table> 
     <Country>Australia</Country> 
     <City>Darwin Airport</City> 
     </Table> 
     <Table> 
     <Country>Australia</Country> 
     <City>Bullsbrook Pearce Amo</City> 
     </Table> 
     <Table> 
     <Country>Australia</Country> 
     <City>Edinburgh M. O.</City> 
     </Table> 
     <Table> 
     <Country>Australia</Country> 
     <City>Forrest Airport</City> 
     </Table> 
     <Table> 
     <Country>Australia</Country> 
     <City>Geraldton Airport</City> 
     </Table> 
     <Table> 
     <Country>Australia</Country> 
     <City>Kalgoorlie Boulder Amo</City> 
     </Table> 
     <Table> 
     <Country>Australia</Country> 
     <City>Kununurra Kununurra Aws</City> 
     </Table> 
     <Table> 
     <Country>Australia</Country> 
     <City>Leigh Creek Airport</City> 
     </Table> 
     <Table> 
     <Country>Australia</Country> 
     <City>Learmonth Airport</City> 
     </Table> 
     <Table> 
     <Country>Australia</Country> 
     <City>Meekatharra Airport</City> 
     </Table> 
     <Table> 
     <Country>Australia</Country> 
     <City>Port Hedland Pardoo</City> 
     </Table> 
     <Table> 
     <Country>Australia</Country> 
     <City>Parafield Airport</City> 
     </Table> 
     <Table> 
     <Country>Australia</Country> 
     <City>Belmont Perth Airport</City> 
     </Table> 
     <Table> 
     <Country>Australia</Country> 
     <City>Katherine Aerodrome</City> 
     </Table> 
     <Table> 
     <Country>Australia</Country> 
     <City>Woomera Aerodrome</City> 
     </Table> 
     <Table> 
     <Country>Australia</Country> 
     <City>Bankstown Airport Aws</City> 
     </Table> 
     <Table> 
     <Country>Australia</Country> 
     <City>Canberra</City> 
     </Table> 
     <Table> 
     <Country>Australia</Country> 
     <City>Coffs Harbour Mo</City> 
     </Table> 
     <Table> 
     <Country>Australia</Country> 
     <City>Cooma</City> 
     </Table> 
     <Table> 
     <Country>Australia</Country> 
     <City>Camden Airport</City> 
     </Table> 
     <Table> 
     <Country>Australia</Country> 
     <City>Dubbo</City> 
     </Table> 
     <Table> 
     <Country>Australia</Country> 
     <City>Norfolk Island Airport</City> 
     </Table> 
     <Table> 
     <Country>Australia</Country> 
     <City>Nowra Ran Air Station</City> 
     </Table> 
     <Table> 
     <Country>Australia</Country> 
     <City>Richmond Aus-Afb</City> 
     </Table> 
     <Table> 
     <Country>Australia</Country> 
     <City>Sydney Airport</City> 
     </Table> 
     <Table> 
     <Country>Australia</Country> 
     <City>Tamworth Airport</City> 
     </Table> 
     <Table> 
     <Country>Australia</Country> 
     <City>Wagga Airport</City> 
     </Table> 
     <Table> 
     <Country>Australia</Country> 
     <City>Williamtown Aerodrome</City> 
     </Table> 
    </NewDataSet>]]></GetCitiesByCountryResult> 
     </GetCitiesByCountryResponse> 
    </soap:Body> 
</soap:Envelope> 

어떻게시 - 로드리게스에 XPath를 찾을 수 :
나는 다음과 같은 SOAP 메시지를 테스트 할 XPATH의 방법을 사용하고있어?

// : GetCitiesByCountryResponse/ : GetCitiesByCountryResult/: NewDataSet/ 표 [1]/* : 도시 [1]

그리고 그것은주고있다 오류 나는이를 사용하고 경로에 대해 XPathContains 어설 션이 실패했습니다. 예외 : xpath에 대한 누락 된 컨텐츠 [declare namespace soap = 'http://schemas.xmlsoap.org/soap/envelope/'; declare namespace ns1 = 'http://www.webserviceX.NET'; // : GetCitiesByCountryResponse/는 : GetCitiesByCountryResult는/: NewDataSet은/ 표 [1]/*이 주석에서 언급 한 것처럼시 [1]] 응답에

+0

'cdata'가 있으므로 xpath를 사용하여 가져올 수 없습니다. Groovy 스크립트를 대신 사용하십시오. – Rao

+0

@Rao 그걸 도와 주시겠습니까? – Sammy

+0

답변을 확인하십시오. – Rao

답변

0

대신 Xpath 어설 기존의 Script Assertion를 사용 . 그렇지만 아래 스크립트를 사용하여 테스트 케이스에 대한 추가 테스트 단계를 추가 할 필요가 없습니다. 위에서 언급 한 응답을 얻는 동일한 SOAP Request 테스트 단계에 대한 스크립트 어설 션을 추가하기 만하면됩니다.
인라인 코멘트를 따르십시오.

/** 
* This is script assertion for the soap request test step. 
* Extracts CDATA of response first. 
* Later checks if the xpath is ok 
**/ 
//Closure to extract data of given node name 
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) 
    def xpathResult = holder.getNodeValue(xpath) 
    log.info "Xpath result : ${xpathResult}" 
    xpathResult 
} 

//check if the response is non empty 
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 = 'Rodrigues' 
def result = (searchByXpath(cdata, "//Table/City[. = '$cityName']/text()") == cityName) ? true : false 
log.info "Is city ${cityName} exist in the table: ${result}" 

//Check the xpath result is true(i.e., given city name exists in the table) 
assert result, "${cityName} does not exist in the result table" 

위의 테스트는 기존 도시에 대한 것입니다.

네거티브 테스트를 수행하려는 경우 도시는 존재하지 않아야합니다., 아래 코드를 사용하십시오.

예를 들어, 표에 도시 San Francisco이없고 주장하려고한다고 가정합니다.

/** 
* Demonstration of negative assertion 
* Given city should not exists 
**/ 
def cityName1 = 'San Francisco' 
def result1 = (searchByXpath(cdata, "//Table/City[. = '$cityName1']/text()") == cityName1) ? true : false 
log.info "Is city ${cityName1} exist in the table: ${result1}" 

//Check the xpath result is false (i.e., given city name does not exist in the table) 
assert !result1, "${cityName1} exists in the result table" 
+0

SanFrancisco 예제를 사용하는 동안 오류가 발생합니다. https://www.dropbox.com/s/9g60o2t57ouxnus/Screenshot%202016-12-06%2022.02.36.png?dl=0 또한로드 리 게스의 예에서 도시 이름을 변경 한 후에도 항상지나갑니다. https://www.dropbox.com/s/j7etfrxth83cpeg/Screenshot%202016-12-06%2022.05.08.png?dl=0 도와주세요 – Sammy

+0

스크린 샷을 표시하십시오 – Rao

+0

제공되는 코드 스 니펫은 테스트 대상입니다 . – Rao

관련 문제