是否有可能使用REST Assured库来测试SOAP Web服务? 我在SOAP UI中有一堆测试套件,我需要检查是否有可能使用REST Assured。 任何人都可以建议这是否可能? 非常感谢您的任何评论。
答案 0 :(得分:0)
REST-assured没有直接支持测试SOAP服务,但可以手动设置SOAPAction
和Content-Type
标头并执行HTTP POST
等。然后你可以在响应中运行XPath断言,就像在REST保证中对正常REST服务一样。
我建议您也评估Karate,因为它内置了对SOAP的支持,并且使XML操作变得更加容易。
答案 1 :(得分:0)
这里我给你举个例子
标题SOAPAction
和Content-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”)返回“节点的值”