美文网首页
企业微信-rest-assured接口测试项目实战(二)

企业微信-rest-assured接口测试项目实战(二)

作者: DayBreakL | 来源:发表于2019-04-02 20:56 被阅读0次

    准备

    企业微信-rest-assured接口测试项目实战(一)

    接口测试封装思想

    • 配置
      根据配置文件获取初始配置和依赖
    • 接口封装
      封装接又调用进行抽象封装
      类似PageObject效果
    • 业务流程
      业务用例设计,含有多个api形成的流程定义
      不要再包含任何接又实现细节
      断言

    配置封装

    • 使用单例来维护全局配置

    单例模式(Singleton Pattern)是Java 中最简单的设计模式之一。 这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。 这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。

    new一个WeworkConfig.java,代码如下:

    public class WeworkConfig{
        public String corpid="wwad5387da586768d8";
        public String agentId="1000002";
        public String Secret="MEsk6ytKetMfjkehk8T2GoCTh6Zbmq1KbIYxurO93lQ";
        public String contactSecret="ALiaGD6WodorwCRqLITgAS4JwLo7cNNTeQ0zeeqxM98";
          //单例模式
        private static WeworkConfig weworkConfig;
        public static WeworkConfig getInstance(){
            if(weworkConfig==null){
                weworkConfig =new WeWorkConfig();
            }
            return weworkConfig;
        }
    }
    

    TestGetToken.java中访问封装的corpid和secret:

    public class TestGetToken {
        @Test
        public void testToken(){
            RestAssured.given().log().all()
                    //访问WeWorkConfig中的corpid
                    .queryParam("corpid",WeWorkConfig.getInstance().corpid)
                    //访问WeWorkConfig中的secret
                    .queryParam("corpSecret",WeWorkConfig.getInstance().secret)
                //when表示触发条件
                .when().get("https://qyapi.weixin.qq.com/cgi-bin/gettoken")
                //then对结果断言
                .then().log().all().statusCode(200).body("errcode",equalTo(0));
        }
    }
    

    接口封装

    对testToken进行封装,new一个Wework.java

    import io.restassured.RestAssured;
    import org.hamcrest.Matchers;
    
    public class Wework {
         public String getToken(){
           return RestAssured.given().log().all()
                    //入参
                    .queryParam("corpid", WeworkConfig.getInstance().corpid)
                    .queryParam("corpSecret", WeworkConfig.getInstance().secret)
                    //when表示触发条件
                    .when().get("https://qyapi.weixin.qq.com/cgi-bin/gettoken")
                    //then对结果断言
                    .then().log().all().statusCode(200).body("errcode", Matchers.equalTo(0))
                    .extract().path("access_token");
         }
        }
    

    业务流程

    打开TestGetToken.java文件,继续封装,直接通过接口调用token。

    import org.junit.jupiter.api.Test;
    import static org.hamcrest.CoreMatchers.not;
    import static org.hamcrest.MatcherAssert.assertThat;
    import static org.hamcrest.core.IsEqual.equalTo;
    
    public class TestGetToken {
        @Test
        public void testToken() {
            Wework wework=new Wework();
            String token =wework.getToken();
            //断言起码不为空
            assertThat(token,not(equalTo(null)));
        }
    }
    

    至此,底层的接口都变成了api的调用。

    代码改造

    现在目录结构如下:


    一般test/java下只放测试用例,所以TestGetToken.java放在test/java下,Wework.javaWeworkConfig.java放在main/java下:

    但是此时Wework中的``报错。
    解决:
    <scope>test</scope>表示只作用在测试相关范围,删掉即可。

    不能频繁访问token,所以要写一个方法,把token存储起来;
    Wework.java中,使用单例模式,修改了方法名,更容易理解,符合习惯:

    import io.restassured.RestAssured;
    import org.hamcrest.Matchers;
    
    public class Wework {
        //私有变量
         private static String token;
         public static String getWeworkToken(){
           return RestAssured.given().log().all()
                    //入参
                    .queryParam("corpid", WeworkConfig.getInstance().corpid)
                    .queryParam("corpSecret", WeworkConfig.getInstance().secret)
                    //when表示触发条件
                    .when().get("https://qyapi.weixin.qq.com/cgi-bin/gettoken")
                    //then对结果断言
                    .then().log().all().statusCode(200).body("errcode",Matchers.equalTo(0))
                    .extract().path("access_token");
         }
         //单例模式,存储token
         public static String getToken(){
             if(token==null){
                token=getWeworkToken();
             }
             return token;
         }
        }
    
    
    

    相关文章

      网友评论

          本文标题:企业微信-rest-assured接口测试项目实战(二)

          本文链接:https://www.haomeiwen.com/subject/bkdmvqtx.html