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

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

继续来学习Rest Assured中常见的功能,上篇介绍了两种方法得到不同类型的响应数据,其实还有一个方法,可以把响应对象装换成字节数组对象。第二个介绍extract().path()方法去摘取某一个字段的值,最后介绍我们实际接口用例开发中的写法是,先获取响应对象,然后根据响应对象提供的方法,去解析拿到响应正文,状态码和响应头字段等。

 

1.响应转换成字节数组

虽然我也不知道为什么要转换成字节数组,以及这种字节数组的好处在哪里,这里来看看如何转换。

/**	 * 以字节数组方式拿到响应对象	 * @throws IOException 	 */	@Test	public void testGetResponseAsByteArray() throws IOException {		byte[] bytes = get("https://reqres.in/api/users/2").asByteArray();		System.out.println("The Response: \n\n" + bytes.length);		//遍历这个字节数组看看		for (byte b : bytes) {			System.out.print(b + " ");		}	}

运行结果

170123 34 100 97 116 97 34 58 123 34 105 100 。。。这后面还有很多没写出来

 

2.使用path()和extract()方法摘取内容

场景浏览器打开

第一步通过相关方法摘取上面红圈这个url的内容,然后拿着这个url去进行发送get请求。

/**	 * 使用path方法提取内容	 */	@Test	public void testExtractDetailsUsingPath() {		String href = 				when().					get("http://jsonplaceholder.typicode.com/photos/1").				then().					contentType(ContentType.JSON).					body("albumId", equalTo(1)).				extract().					path("url");		System.out.println(href);				when().get(href).then().statusCode(200);						}

运行结果

[RemoteTestNG] detected TestNG version 6.14.3https://via.placeholder.com/600/92c952PASSED: testExtractDetailsUsingPath

上面then()后两行代码的意思是,contentType是设置响应内容为JSON格式,之前我们都是默认,不进行显式设置。body这行代码是对响应正文进行断言,判断这个id是不是等于1. 后面extract().path()是根据xpath路径去摘取这个字段的值。也就是上面红圈这个url,拿到之后去执行发送请求。

上面这个用例,还可以一行代码简写成这样。

/**	 * 使用path方法提取内容,一行代码写法	 */	@Test	public void testExtractDetailsUsingPath2() {		String href = get("http://jsonplaceholder.typicode.com/photos/1").path("url");		System.out.println(href);		when().get(href).then().statusCode(200);				//第二种写法		String href1 = get("http://jsonplaceholder.typicode.com/photos/1").andReturn().jsonPath().getString("url");		System.out.println(href1);		when().get(href1).then().statusCode(200);	}

 

3.先拿到响应再做其他事情(重点掌握)

有时候我们并不喜欢我们上面这些写法,很多场景下,我们都是习惯先拿到响应对象,然后再去做其他事情。例如获取响应头,获取响应状态码,然后获取响应正文中部分字段的值等,看看下面这个例子。

/**	 * 先拿到响应对象,然后再解析	 */	@Test	public void testFirstGetResponseThenDoActions() {		Response resp = get("http://jsonplaceholder.typicode.com/photos/1").		then().		extract().			response();		// 解析响应		System.out.println("Context Type: " + resp.contentType());		System.out.println("Status Code: " + resp.statusCode());		System.out.println("Href: " + resp.path("url"));	}

运行结果:

[RemoteTestNG] detected TestNG version 6.14.3Context Type: application/json; charset=utf-8Status Code: 200Href: https://via.placeholder.com/600/92c952PASSED: testFirstGetResponseThenDoActions

 

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

你可能感兴趣的文章
判断时间或者数字是否连续
查看>>
docker-daemon.json各配置详解
查看>>
Mac 下docker路径 /var/lib/docker不存在问题
查看>>
Docker(一)使用阿里云容器镜像服务
查看>>
Docker(二) 基础命令
查看>>
Docker(三) 构建镜像
查看>>
Spring 全家桶注解一览
查看>>
JDK1.8-Stream API使用
查看>>
cant connect to local MySQL server through socket /tmp/mysql.sock (2)
查看>>
vue中的状态管理 vuex store
查看>>
Maven之阿里云镜像仓库配置
查看>>
Maven:mirror和repository 区别
查看>>
微服务网关 Spring Cloud Gateway
查看>>
SpringCloud Feign的使用方式(一)
查看>>
SpringCloud Feign的使用方式(二)
查看>>
关于Vue-cli+ElementUI项目 打包时排除Vue和ElementUI
查看>>
Vue 路由懒加载根据根路由合并chunk块
查看>>
vue中 不更新视图 四种解决方法
查看>>
MySQL 查看执行计划
查看>>
OpenGL ES 3.0(四)图元、VBO、VAO
查看>>