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

准备

企业微信-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中的``报错。
解决:
test表示只作用在测试相关范围,删掉即可。

不能频繁访问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接口测试项目实战(二))