Java基于rest assured实现接口测试过程解析!
背景
java程序员一般写的是后端服务是JavaWeb类型的项目,主要包括Http接口和dubbo接口,Http接口一般采用的rest风格,那么如何快速的对rest接口在第三方的测试框架上进行测试呢?
rest-assured框架是一个不错的工具。
使用之前,需要熟悉一下最基础的使用方法,在写完几个接口的测试用例之后,好比你可以使用你的三棱军刺熟练的进行基础的攻击了。
快速的来一个helloworld吧!
假设你写了一个接口: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返回某路径下的数据;
io.rest-assured rest-assured 4.2.0 io.rest-assured json-path 4.2.0
然后你就可以愉快的编写测试用例,然后使用rest-assured进行接口测试了。
使用要点
先上简单代码吧!
先准备测试数据:
finalTestCaseDataModeltestCaseDataModel=newTestCaseDataModel<>(); finalLoginRestReqloginRestReq=LoginRestReq.builder() .appId("2a6bf452219cfe44c7f78231e3c80a13072b6727") .nonce("123456") .timestamp(System.currentTimeMillis()) .userId("lxlifuchun") .userName("李福春") .build(); StringappSecret="91e47f584dae551170ade272b2c7a69f"; loginRestReq.setChecksum(SignUtils.generateCheckSum(loginRestReq.getAppId(),appSecret,loginRestReq.getTimestamp(),loginRestReq.getNonce())); testCaseDataModel.setInputParam(loginRestReq); ExpectModelexpectModel=newExpectModel(); expectModel.setPath("data.id"); expectModel.setMatcher(Matchers.lessThan(0)); testCaseDataModel.setExpectResult(Arrays.asList(expectModel));
RestAssured.baseURI="https://rest-beta.xxx.com";
finalValidatableResponsevalidatableResponse=given().contentType(ContentType.JSON)
.header("requestId",UUID.randomUUID().toString())
.body(testCaseData.getInputParam()).
post("/user_service/user/login")
.then().contentType(ContentType.JSON);
for(Objectobj:testCaseData.getExpectResult()){
ExpectModelitem=(ExpectModel)obj;
validatableResponse.body(item.getPath(),item.getMatcher());
}
做的事情很简单,就是拿一个登录接口来实际的试一下:
login接口接受一个json的参数,LoginRestReq对下转换之后得到;
然后返回数据,数据中有一个用户id,路径是data.id,如果id大于0,标识登录操作成功,登录接口正常。
很好的完成了接口的测试,如果失败,会抛出错误,捕获错误,然后输出信息,标识测试用例不通过,提示到界面或者发送邮件给到开发人员,即完成了接口的自动化测试。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。