博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
RestAssured接口自动化从入门到框架搭建-6-RestAssured基本功能3-XML响应内容解析
阅读量:4302 次
发布时间:2019-05-27

本文共 2315 字,大约阅读时间需要 7 分钟。

前面几个测试用例的响应内容都是JSON格式,现在来举例请求的响应内容是XML格式的数据如何解析,其实在Rest Assured中,JSPN和XML数据解析都是一样,通用的写法是xpath表示,具体我们来看两个XML响应的解析例子。

 

1.响应内容是单个XML数据

请求demo:

什么是xpath路径呢,不管在json还是xm都可以使用xpath路径,例如CUSTOMER.ID 就是一个xpath路径,下面我们代码中会用到,用来断言是不是等于10.

/**	 * 测试响应内容是单个xml数据	 */	@Test	public void testSingleXMLContent() {		given().			get("http://www.thomas-bayer.com/sqlrest/CUSTOMER/10/").		then().			body("CUSTOMER.ID", equalTo("10")).			log().all();	}

这10要拿String类型去对比,如果是int类型就会匹配失败,所以我加上了“10”

再写一个用例,每个xml数据都去断言和校验。

/**	 * 测试响应内容是单个xml数据,写多个断言点	 */	@Test	public void testSingleXMLContents() {		given().			get("http://www.thomas-bayer.com/sqlrest/CUSTOMER/10/").		then().			body("CUSTOMER.ID", equalTo("10")).			body("CUSTOMER.FIRSTNAME", equalTo("Sue")).			body("CUSTOMER.LASTNAME", equalTo("Fuller")).			body("CUSTOMER.STREET", equalTo("135 Upland Pl.")).			body("CUSTOMER.CITY", equalTo("Dallas")).			log().all();	}

这个断言检查点写法,我觉得实际工作中不怎么使用,除非是特别重要的数据。

 

2.多个验证点一行代码的写法

如果觉得上面多个body中校验点写法很啰嗦的话,其实还有一种方法可以简写成一行。看看下面例子。

/**	 * 多个测试点一行代码去校验	 */	@Test	public void testCompleteTextinOneLine() {		given().			get("http://www.thomas-bayer.com/sqlrest/CUSTOMER/10/").		then().			body("CUSTOMER.text()", equalTo("10SueFuller135 Upland Pl.Dallas")).			log().all();	}

运行结果

[RemoteTestNG] detected TestNG version 6.14.3HTTP/1.1 200 OKServer: Apache-Coyote/1.1Content-Type: application/xmlDate: Sun, 21 Jul 2019 07:19:58 GMTContent-Length: 241
10
Sue
Fuller
135 Upland Pl.
Dallas
PASSED: testCompleteTextinOneLine

 

3.根据XPATH表达式查找值

/**	 * find value by xpath	 */	@Test	public void findValueByXpath() {		given().		get("http://www.thomas-bayer.com/sqlrest/CUSTOMER/10/").	then().		body(hasXPath("/CUSTOMER/FIRSTNAME"), containsString("Sue"));	}
[RemoteTestNG] detected TestNG version 6.14.3PASSED: findValueByXpath

 

4.再来一个xpath表达式使用场景

请求demo:

代码中使用XPATH定位表达式来确定/20/这个数据

下面代码来判断>20<, 这个20就是当前INVOICE节点的text的值。

/**	 * find value by xpath, eg2	 */	@Test	public void findValueByXpath2() {		given().		get("http://www.thomas-bayer.com/sqlrest/INVOICE/").	then().		body(hasXPath("/INVOICEList/INVOICE[text()='20']")).		log().all();	}

当然这里使用了log().all()方法会把当前请求全部list内容都打印出来,上面判断条件只是,这里多响应内容中,有没有text()=20这条数据。

 

总结:

基于XML格式的响应还是比较少,现在基本上全部是JSON的格式。本篇了解一下,知道Rest Assured框架能够处理XML格式的响应就好。

转载地址:http://xjows.baihongyu.com/

你可能感兴趣的文章
OpenGL ES 3.0(九)实现美颜相机功能
查看>>
FFmpeg 的介绍与使用
查看>>
Android 虚拟机简单介绍——ART、Dalvik、启动流程分析
查看>>
原理性地理解 Java 泛型中的 extends、super 及 Kotlin 的协变、逆变
查看>>
FFmpeg 是如何实现多态的?
查看>>
FFmpeg 源码分析 - avcodec_send_packet 和 avcodec_receive_frame
查看>>
FFmpeg 新旧版本编码 API 的区别
查看>>
RecyclerView 源码深入解析——绘制流程、缓存机制、动画等
查看>>
Android 面试题整理总结(一)Java 基础
查看>>
Android 面试题整理总结(二)Java 集合
查看>>
学习笔记_vnpy实战培训day02
查看>>
学习笔记_vnpy实战培训day03
查看>>
VNPY- VnTrader基本使用
查看>>
VNPY - CTA策略模块策略开发
查看>>
VNPY - 事件引擎
查看>>
MongoDB基本语法和操作入门
查看>>
学习笔记_vnpy实战培训day04_作业
查看>>
OCO订单(委托)
查看>>
学习笔记_vnpy实战培训day05
查看>>
学习笔记_vnpy实战培训day06
查看>>