使用REST Assured库测试SOAP Web服务

时间:2017-07-07 10:52:36

标签: web-services soapui rest-assured

是否有可能使用REST Assured库来测试SOAP Web服务? 我在SOAP UI中有一堆测试套件,我需要检查是否有可能使用REST Assured。 任何人都可以建议这是否可能? 非常感谢您的任何评论。

2 个答案:

答案 0 :(得分:0)

REST-assured没有直接支持测试SOAP服务,但可以手动设置SOAPActionContent-Type标头并执行HTTP POST等。然后你可以在响应中运行XPath断言,就像在REST保证中对正常REST服务一样。

我建议您也评估Karate,因为它内置了对SOAP的支持,并且使XML操作变得更加容易。

答案 1 :(得分:0)

这里我给你举个例子

标题SOAPActionContent-Type 必填。你需要找到你的情况下的SOAPAction标题,有时候是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);

您应该设置的代码中的元素:

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

网址是否在哪里发出请求

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

参数o body()是一个带有请求的xml的字符串

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

“findSoapAction”是一个字符串,其中包含您应该猜测的SOAPAction标头的值,“text / xml”是您应该设置为Content-Type标头的字符。

xmlPath.get("fatherNode.childNode");

返回节点的值。例如:

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

get(“fatherNode.childNode”)返回“节点的值”