Rest Assured 中的 XmlPath 是什么?


我们可以使用 XMLPath 找到所有 XML 节点。如果响应是 XML 格式,我们需要使用 XMLPath 下的方法。如果节点的值是整数,则必须使用 getInt 方法。

如果节点的值是字符串,则必须使用 getString 方法,如果值在列表中,则可以使用 getList 方法获取其值。我们首先将通过 Postman 对模拟 API URL 发送 GET 请求。

使用 Rest Assured,我们将验证其 XML 响应,其中包含科目 Rest Assured、Postman 的名称,以及它们的价格分别为 10 和 6。

在上面的 XML 响应中,我们可以通过遍历路径 - books.book.author 和 books.book.pages 分别获取 author 和 pages 节点的值。

示例 1

代码实现

import org.testng.annotations.Test;
import static io.restassured.RestAssured.*;
import io.restassured.RestAssured;
import io.restassured.http.ContentType;
import io.restassured.path.xml.XmlPath;
public class NewTest {
   @Test
   void getXMLNodes() {

      //base URI with Rest Assured class
      RestAssured.baseURI = "https://run.mocky.io/v3";

      //accept XML CONTENT as String
      String r = given().accept(ContentType.XML).when()

      //GET request
      .get("/c1d5e067-212d-4f63-be0db51751af1654")
      .thenReturn().asString();

      //object of XmlPath class
      XmlPath x = new XmlPath(r);

      //get nodes by traversing node paths
      System.out.println("Author name: " + x.getString("books.book.author"));
      System.out.println("Pages: " + x.getString("books.book.pages"));
   }
}

输出

我们可以使用 XMLPath 的方法检查 HTML 文档。我们首先将通过 Postman 对一个端点发送 GET 请求,并查看响应主体。在下图中,可以看到获得的 title 值为 About Careers at Tutorials Point - Tutorialspoint。

端点 - https://tutorialspoint.com/about/about_careers.htm

要从响应中获取 html 内容,我们将使用 contentType(ContentType.HTML).extract() 方法。然后将获得的响应主体转换为字符串。最后,我们将使用 html.head.title 方法获取页面标题。

示例 2

代码实现

import static io.restassured.RestAssured.given;
import static io.restassured.path.xml.XmlPath.CompatibilityMode.HTML;
import static org.testng.Assert.assertEquals;
import org.testng.annotations.Test;
import io.restassured.http.ContentType;
import io.restassured.path.xml.XmlPath;
import io.restassured.response.Response;
public class NewTest {
   @Test
   public void verifyHtml() {

      //extract HTML response from endpoint
      Response r = given()
      .when()
      .get("https://tutorialspoint.com/about/about_careers.htm")
      .then().contentType(ContentType.HTML).extract()
      .response();

      //convert xml body to string
      XmlPath p = new XmlPath(HTML, r.getBody().asString());

      //obtain html page title
      System.out.println(p.getString("html.head.title"));

      //verify title with assertion
      assertEquals(p.getString("html.head.title"), "About Careers at Tutorials Point - Tutorialspoint");
   }
}

输出

更新于: 2021-11-17

3K+ 次浏览

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告