博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
0312 java接口测试三棱军刺rest-assured
阅读量:4211 次
发布时间:2019-05-26

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

image.png

背景

java程序员一般写的是后端服务是JavaWeb类型的项目,主要包括Http接口和dubbo接口,Http接口一般采用的rest风格,那么如何快速的对rest接口在第三方的测试框架上进行测试呢? rest-assured框架是一个不错的工具。好比军人的三棱军刺,如上图。 使用之前,需要熟悉一下最基础的使用方法,在写完几个接口的测试用例之后,好比你可以使用你的三棱军刺熟练的进行基础的攻击了。

快速的来一个hello world吧!

假设你写了一个接口: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返回某路径下的数据;

io.rest-assured
rest-assured
4.2.0
io.rest-assured
json-path
4.2.0

然后你就可以愉快的编写测试用例,然后使用rest-assured进行接口测试了。

使用要点

先上简单代码吧!
先准备测试数据:

final TestCaseDataModel
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完成了接口测试,实在是一个很好用的工具。最近工作太忙,没法输出内容丰富的文章,发一篇短小的文章吧!希望可以帮到你!<b

原创不易,转载请注明出处,欢迎多沟通交流

你可能感兴趣的文章
Linux学习记录--Boot Loader
查看>>
Linux学习记录--开机挂载错误
查看>>
Linux学习记录--程序编译与函数库
查看>>
Linux学习记录--软件安装RPM|SRPM|YUM
查看>>
Linux学习记录--内核|内核模块编译
查看>>
Linux学习记录--文件管理相关系统编程
查看>>
Linux学习记录--进程控制相关系统调用
查看>>
Linux学习记录--匿名管道通讯
查看>>
Linux学习记录--有名管道通信
查看>>
内存(字节)对齐
查看>>
Linux学习记录--文件IO操作相关系统编程
查看>>
QSS知识总结
查看>>
C语言编译原理
查看>>
如何创建可执行程序
查看>>
Jenkins配置基于角色的项目权限管理
查看>>
Jenkins-Email Extension Plugin
查看>>
Jenkins—Jenkins是什么
查看>>
Jenkins系列—安装与配置
查看>>
读写CSV文件
查看>>
通过SMTP发邮件
查看>>