1. 如何确保我们的请求是可以发送成功的。
2. 如何确保我们的接口响应是符合业务需求的。
目录
大纲
本文我们将介绍:
1. Xpath基本语法。
2. XML响应结果解析。
3. XML响应结果断言。
XML响应数据
<soap: Body>
<AddReponse xmlns = "http://tempuri.org/">
<AddResult>4</AddResult>
</AddReponse>
</soap: Body>
我们可以如何获取AddResult的值呢?为了解决这种难题,Xpath语言应运而生, 什么是Xpath呢。
Xpath介绍
1. 全称是XML路径语言。
2. 是XML Path Language的缩写。
3. 是用来确定XML文档中某部分位置。
4. 是基于xml的树状结构, 提供在数据结构数组中寻找节点的能力。
5. Xpath可以帮助我们解析XML文档, 从而提取关键元素信息。
Xpath语法
Xpath | 描述 |
/ | 根节点 |
. | 现行节点 |
// | 不管位置, 选择所有符合条件的元素 |
* | 匹配所有元素节点 |
[ ] | 迭代器标示, 序号编号从1开始 |
| | 支持迭代器中做多选 |
编码
1. 使用//AddResult.text()定位xml里4的值。
2. 使用Matchers的equalTo响应断言。
package ch05_xml;
import org.apache.commons.io.IOUtils;
import org.junit.jupiter.api.Test;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import static io.restassured.RestAssured.given;
import static org.hamcrest.Matchers.equalTo;
import org.hamcrest.Matchers.*;
/**
* author 大力pig
*/
public class TestParmXml {
@Test
public void testParmXml(){
//定义请求体数据 : XML
try {
File file = new File("src/test/resources/add.xml");
FileInputStream fis = new FileInputStream(file);
String regBody = IOUtils.toString(fis, "UTF-8");
given()
.contentType("text/xml") //设定请求内容媒体类型
.body(regBody) //定制请求体数据
.when()
.get("http://dneonline.com/calculator.asmx")//发送POST请求
.then()
.log().all()
.body("//AddResult.text()", equalTo("2"))
.statusCode(200);//响应断言
} catch (IOException e) {
e.printStackTrace();
}
}
}
Add xml的值
<Envelope xmlns = "http://schemas.xmlsoap.org/soap/envelope/">
<Body>
<Add xmlns = "http://tempuri.org/">
<intA>1</intA>
<intB>1</intB>
</Add>
</Body>
</Envelope>