2017-07-07 3 views

Antwort

0

REST-versichert hat keine direkte Unterstützung für SOAP-Dienste zu testen, aber es ist möglich, manuell die SOAPAction und Content-Type Header setzen und dabei einen HTTP-POST usw. Dann können Sie XPath Behauptungen auf die Reaktion laufen, wie Sie für den normalen tun REST-Dienste in REST-gesichert.

Ich schlage vor, Sie bewerten auch Karate, da es integrierte Unterstützung für SOAP hat, und macht auch XML-Manipulation viel einfacher. Hier

0

zeige ich Ihnen ein Beispiel

Headers SOAPAction und Content-Type sind Pflicht. Sie müssen herausfinden weicht der SOAP-Aktions-Header in Ihrem Fall ist, manchmal der nächste Teil der letzten „/“ in der URL

import static io.restassured.RestAssured.given; 
import io.restassured.RestAssured; 
import io.restassured.path.xml.XmlPath; 
import io.restassured.response.Response; 

XmlPath xmlPath; 
Response response; 

RestAssured.baseURI = "http://url"; 
response = 
       given() 
        .request().body("xml_text").headers("SOAPAction", "findSoapAction", "Content-Type", "text/xml"). 
       when() 
        .post("/path"). 
       then() 
        .assertThat() 
         .statusCode(200).extract().response(); 
System.out.println(response.asString()); 

//next we get the xmlPath of the response 
xmlPath = response.xmlPath(); 
//and get the value of a node in the xml 
String nodeValue= xmlPath.get("fatherNode.childNode"); 
System.out.println(nodeValue); 

Elemente im Code ist, sollten Sie ein:

RestAssured.baseURI = "http://url"; 

Sind die uRL, die Anforderung zu machen

given().request().body("xml_text") 

das Argument o Körper() ist eine Zeichenfolge mit dem xml des Antrags

headers("SOAPAction", "findSoapAction", "Content-Type", "text/xml") 

"findSoapAction" ist eine Zeichenfolge mit dem Wert des SOAPAction-Headers, den Sie erraten sollten, und "text/xml" sollten Sie als Content-Type-Header festlegen.

xmlPath.get("fatherNode.childNode"); 

gibt den Wert des Knotens zurück. Beispiel:

<fatherNode> 
    <childNode>value of the node</childNode> 
</fatherNode> 

get ("fatherNode.childNode") gibt "Wert des Knotens"

Verwandte Themen