最新公告
  • 欢迎您光临开源论坛,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入我们
  • Java基于rest assured实现接口测试过程解析

    背景

    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,标识登录操作成功,登录接口正常。

    很好的完成了接口的测试,如果失败,会抛出错误,捕获错误,然后输出信息,标识测试用例不通过,提示到界面或者发送邮件给到开发人员,即完成了接口的自动化测试。

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持本网站

    开源论坛,我们只做源码的搬运工
    开源论坛 » Java基于rest assured实现接口测试过程解析

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    开源论坛
    一个高级程序员模板开发平台

    发表评论

    • 251会员总数(位)
    • 411资源总数(个)
    • 4本周发布(个)
    • 0 今日发布(个)
    • 249稳定运行(天)

    提供最优质的资源集合

    立即查看 了解详情