背景

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

快速的来一个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完成了接口测「试」,实在是一个很好用的工(具)。最近工作太忙,没法输出内容丰富的文章,发一篇短小的文章吧!《希望可以帮》到你! 原创不易,转载请注明出处。

,

申博sunbet

申博Sunbet www.0379st.com信誉来自于每一位客户的口碑,Sunbet贴心的服务,〖让你〗尊享贵宾通道,秒速提现,秒速到账,同行业中体验最佳。

Usdt自动充值接口声明:该文看法仅代表作者自己,与本平台无关。转载请注明:「济」宁信息网:0312 java接口测试三《棱军刺》rest-assured
评论关闭

分享到:

吴君如15岁女儿近照曝光!穿吊带皮裤身体丰腴,眼睛嘴巴超像爸