准备
接口测试封装思想
- 配置
根据配置文件获取初始配置和依赖 - 接口封装
封装接又调用进行抽象封装
类似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.java
和WeworkConfig.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;
}
}
网友评论