0312 java接口测试三棱军刺rest-assured

背景
java程序员一般写的是后端服务是JavaWeb类型的项目,主要包括Http接口和dubbo接口,Http接口一般采用的rest风格,那么如何快速的对rest接口在第三方的测试框架上进行测试呢?<br />rest-assured框架是一个不错的工具。好比军人的三棱军刺,如上图。<br />使用之前,需要熟悉一下最基础的使用方法,在写完几个接口的测试用例之后,好比你可以使用你的三棱军刺熟练的进行基础的攻击了。
快速的来一个hello world吧!
假设你写了一个接口:lotto,访问路径是: http://localhost:8080/lotto
接口返回值是:
{
"lotto":{
"lottoId":5,
"winning-numbers":[2,45,34,23,7,5,3],
"winners":[{
"winnerId":23,
"numbers":[2,45,34,23,3,5]
},{
"winnerId":54,
"numbers":[52,3,12,11,18,22]
}]
}
}
如何快速的验证接口是否返回正常值呢?
get("/lotto").then().body("lotto.winners.winnerId", hasItems(23, 54));
使用简单吧!
引入
不多说,直接maven的方式引入:注意,我直接按照默认的scope引入的,不是test;
主要引入以下2个依赖,原因如下:
rest-assured: 主要测试基本的http的rest风格接口,这个是最基础的依赖;
json-path: 主流的接口主要返回json,对接口进行测试用例测试,主要也是判断json返回某路径下的数据;
<dependency>
<groupId>io.rest-assured</groupId>
<artifactId>rest-assured</artifactId>
<version>4.2.0</version>
</dependency>
<dependency>
<groupId>io.rest-assured</groupId>
<artifactId>json-path</artifactId>
<version>4.2.0</version>
</dependency>
然后你就可以愉快的编写测试用例,然后使用rest-assured进行接口测试了。
使用要点
先上简单代码吧!
先准备测试数据:
final TestCaseDataModel<LoginRestReq> testCaseDataModel = new TestCaseDataModel<>();
final LoginRestReq loginRestReq = LoginRestReq.builder()
.appId("2a6bf452219cfe44c7f78231e3c80a13072b6727")
.nonce("123456")
.timestamp(System.currentTimeMillis())
.userId("lxlifuchun")
.userName("李福春")
.build();
String appSecret = "91e47f584dae551170ade272b2c7a69f";
loginRestReq.setChecksum(SignUtils.generateCheckSum(loginRestReq.getAppId(), appSecret, loginRestReq.getTimestamp(), loginRestReq.getNonce()));
testCaseDataModel.setInputParam(loginRestReq);
ExpectModel expectModel = new ExpectModel();
expectModel.setPath("data.id");
expectModel.setMatcher(Matchers.lessThan(0));
testCaseDataModel.setExpectResult(Arrays.asList(expectModel));
RestAssured.baseURI = "https://rest-beta.xxx.com";
final ValidatableResponse validatableResponse = given().contentType(ContentType.JSON)
.header("requestId", UUID.randomUUID().toString())
.body(testCaseData.getInputParam()).
post("/user_service/user/login")
.then().contentType(ContentType.JSON);
for (Object obj : testCaseData.getExpectResult()) {
ExpectModel item = (ExpectModel) obj;
validatableResponse.body(item.getPath(), item.getMatcher());
}
做的事情很简单,就是拿一个登录接口来实际的试一下:
login接口接受一个json的参数,LoginRestReq对下转换之后得到;
然后返回数据,数据中有一个用户id,路径是 data.id,如果id大于0,标识登录操作成功,登录接口正常。
很好的完成了接口的测试,如果失败,会抛出错误,捕获错误,然后输出信息,标识测试用例不通过,提示到界面或者发送邮件给到开发人员,即完成了接口的自动化测试。
小结
简单的使用了工具rest-assured完成了接口测试,实在是一个很好用的工具。最近工作太忙,没法输出内容丰富的文章,发一篇短小的文章吧!希望可以帮到你!<br />
原创不易,转载请注明出处。
0312 java接口测试三棱军刺rest-assured的更多相关文章
- java 接口测试
学习java 时间也不算太长,大学有点基础,学起来也顺手多了,其实我感觉更是因为学习完python之后,在学习别的语言的时候就简单多了,几乎所有的语言学起来都差不多.前几篇写过的都是python接口测 ...
- java 接口测试,使用excel做数据驱动(二)
承接上篇. 改变我们的测试驱动方式,灵活设置测试用例. 数据驱动测试 数据驱动测试的核心是: 测试数据与测试脚本分离,实现测试脚本参数化, 提高测试脚本的可重用性.在自动化功能测试中如果灵活使用数据源 ...
- java接口测试入门
一.什么是接口 接口是前端和后端的数据通道 二.如何获取接口 1.开发不提供接口文档,通过抓包工具比如fiddler进行抓取,如下: 步骤一:设置浏览器(比如火狐)代理 步骤二:设置url过滤器,进入 ...
- JAVA接口测试类
package etcom.servlet; import java.io.BufferedReader; import java.io.InputStreamReader; import java. ...
- 接口测试专题(Java & jmeter & Linux基础)
以下是我和两个朋友原创文章合集,主题是接口测试,有Java接口测试案例和jmeter的案例,还有接口测试相关服务器操作基础.欢迎点赞.关注和转发. 接口测试 httpclient处理多用户同时在线 h ...
- Redis入门——Java接口
1. maven配置 <dependency> <groupId>redis.clients</groupId> <artifactId>jedis&l ...
- 【转】Java学习---10个测试框架介绍
[原文]https://www.toutiao.com/i6594302925458113027/ JAVA 程序员需要用到 10 个测试框架和库 Java 程序员需要用到十大单元测试和自动化集成测试 ...
- LoadRunner+Java接口性能测试
想必各位小伙伴们会对LR还可以调用java感到好奇,之前我也这么一直认为LR只支持C语言.其实LR脚本支持的语言有:C.Java.Visual Basic.VbScript.JavaScript,只不 ...
- REST API 自动化测试 利器Rest Assured(API接口自动化测试框架体系)
现在,越来越多的 Web 应用转向了 RESTful 的架构,很多产品和应用暴露给用户的往往就是一组 REST API,这样有一个好处,用户可以根据需要,调用不同的 API,整合出自己的应用出来.从这 ...
随机推荐
- centos7 部署vue项目(前后端分离、nginx)
一.环境准备 1.centos7系统 2.mysql数据库 3.在centos7虚拟机上安装好nginx 二.部署内容准备 1.后端war包 或者可执行jar 因为我这里是spring boot项目. ...
- tmux的基本用法
tmux的基本用法: tmux #启动 C-b d #挂起,效果如同screen中的C-a d tmux attach #恢复会话,效果如同screen中的screen -r 更多功能(需要在tmux ...
- 乐观锁(Optimistic Lock)
乐观锁(非阻塞)指不通过锁表来解决并发问题,一般情况下表数据都会加入一个version字段,对该字段进行比较更新来保证数据的一致性. 这里写了个demo,应该可以说明乐观锁的问题. public cl ...
- 安装oracle 11g 客户端,检查过程中报物理内存不足的解决
今早接到同事电话,说安装oracle 11g客户端的时候,在检查先决条件的时候,报错,说内存不足,但是本机的内存是2G,肯定够用:如图: 找了一圈,原来Oracle执行先决条件检查是依赖c$共享,很多 ...
- Java IO: 字符流的Piped和CharArray
作者: Jakob Jenkov 译者: 李璟(jlee381344197@gmail.com) 本章节将简要介绍管道与字符数组相关的reader和writer,主要涉及PipedReader.Pip ...
- vyos的Xvlan配置方式
set interfaces bridge br0 address '172.12.12.10/24' //开启一个桥借口,用于xvlan的通信 set interfaces vxlan vxlan0 ...
- Java的同步和异步
同步:发送一个请求,等待返回,然后再发送下一个请求 异步:发送一个请求,不等待返回,随时可以再发送下一个请求 同步可以避免出现死锁,读脏数据的发生,一般共享某一资源的时候用,如果每个人都有修改权限,同 ...
- from PIL import image报错
python中import PIL可以,但是from PIL import Image就报错? ’‘ 大家在安装pillow的时候,可能会安装成功,但是当运行from pIL import image ...
- 良知VS野心,苹果为何要翻新手机?
前不久,苹果在大中华区推出了iPhone和iPad换机服务,消息一经发出便引发了果粉们的狂欢,那些丢弃在抽屉里的iPhone4S们看上去终于有着落了,也更坚定了"我是果粉,我骄傲" ...
- Python建立web静态服务器
原文地址:http://www.bugingcode.com/blog/python_html_web_server.html python作为工具,提供了很多好用的命令,比如有时候突然需要建立一个解 ...