博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
RestAssured接口自动化从入门到框架搭建-14-响应断言-使用Java 8 lambda表达式和响应时间测量
阅读量:4302 次
发布时间:2019-05-27

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

继续来看看响应内容中的验证场景,这篇主要介绍如何使用java 8 lambda表达式在响应内容中断言的使用场景。然后来看看接口性能测试中响应时间丈量的方法。

 

1.正文属性断言场景

下面图片是浏览器上访问效果

断言thumbnailUrl的值是不是这个图片中的地址。

 

2.使用匿名类

在java8之前,我们使用匿名类来实现。

/**	 * 响应正文中的属性使用匿名类来断言	 */	@Test	public void testBodyParameterInResponse() {		given().			get("http://jsonplaceholder.typicode.com/photos/1/").		then().			body("thumbnailUrl", new ResponseAwareMatcher
() { public Matcher
matcher(Response response) throws Exception { return equalTo("https://via.placeholder.com/150/92c952"); } }); }

 

3.使用Java 8 lambda表达式

使用lambda表达式之后,代码更简洁。

/**	 * 响应正文中的属性使用lambda表达式来断言	 */	@Test	public void testBodyParameterInResponse() {		given().			get("http://jsonplaceholder.typicode.com/photos/1/").		then().			body("thumbnailUrl", response -> equalTo("https://via.placeholder.com/150/92c952"));                                given().			get("http://jsonplaceholder.typicode.com/photos/1/").		then().			body("thumbnailUrl", endsWith("92c952"));	}

lambda表达式是函数式编程,代码灵活,初学者比较困难掌握,Groovy中有很多这种写法,最明显就是闭包。

 

4.cookie断言

由于每次浏览器访问都产生不同cookies,所以下面代码会运行失败。

/**	 * test cookies in response	 */	@Test	public void testCookieInResponse() {		given().			get("http://jsonplaceholder.typicode.com/photos/1/").		then().			log().all().assertThat().cookie("__cfduid","d4eb57be1eeb2781c8f1f864b04c6ba741563591180");	}

实际代码中,cookies是通过代码去实时获取。cookies是在一定有效期内是同一个。

 

5.响应时间丈量

有时候,我们需要做一些接口的性能测试,其中最大的性能指标就是接口的响应时间,那么我们来几个简单的练习,关于响应时间的。

/**	 * 响应时间	 * 这个包含,http请求加响应处理时间 加上我们使用rest assured这个工具产生的时间之和	 */	@Test	public void testResponseTime() {		long t = given().get("http://jsonplaceholder.typicode.com/photos/").time();		System.out.println(t);	}

运行结果

[RemoteTestNG] detected TestNG version 6.14.32591PASSED: testResponseTime

但是是毫秒,也就是2.6秒差不多这个请求。

如果想要直接输出单位是秒,而不是默认的毫秒,代码改成这样。

public void testResponseTime() {		long t = given().get("http://jsonplaceholder.typicode.com/photos/").timeIn(TimeUnit.SECONDS);		System.out.println(t);	}

如果我们要做这样场景,这个接口响应时间不能超过多少秒,可以这样写

@Test	public void testResponseTime() {		given().get("http://jsonplaceholder.typicode.com/photos/").then().time(lessThan(2000L));	}

上面代码就是超过2秒就会抛异常,小于2秒就执行通过。

 

 

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

你可能感兴趣的文章
openstack报错解决一
查看>>
openstack报错解决二
查看>>
linux source命令
查看>>
openstack报错解决三
查看>>
乙未年年终总结
查看>>
子网掩码
查看>>
第一天上班没精神
查看>>
启动eclipse报错:Failed to load the JNI shared library
查看>>
eclipse安装插件的两种方式在线和离线
查看>>
linux下源的相关笔记(suse)
查看>>
linux系统分区文件系统划分札记
查看>>
Linux(SUSE 12)安装Tomcat
查看>>
Linux(SUSE 12)安装jboss4并实现远程访问
查看>>
Neutron在给虚拟机分配网络时,底层是如何实现的?
查看>>
netfilter/iptables全攻略
查看>>
Overlay之VXLAN架构
查看>>
Eclipse : An error occurred while filtering resources(Maven错误提示)
查看>>
在eclipse上用tomcat部署项目404解决方案
查看>>
web.xml 配置中classpath: 与classpath*:的区别
查看>>
suse如何修改ssh端口为2222?
查看>>