好久没在社区发表过文章了,今天的目的是来取经的。
IDE:IntelliJ IDEA
编译:maven
请求:rxjava + retrofit
数据库:SQL Server(与后端同步)
断言:TestNG + 自定义
执行:TestNG
报告:ExtentReports
请求设计
接口层设计
Api
测试集设计
Suite
用例层设计
Java 接口测试不同于 Python 接口测试,Java 需要一个实体类来映射接口返回结构,所以需要一个实体类。
起初是人工编写,写了 2 个后受不了了,工作量太大
然后装了个 GsonFormat,速度有些许提升,写了一个模块后,又受不了
改进:
BeanPoet
直接生成实体类输出到output
文件夹public class GetTokenCase {
@Test
@JavaBean
public void testGetToken() {
}
}
请求实体的封装又是一个工作量巨大的地方
起初是人工写方法,一个参数一个参数的写,简直要命
然后利用 IDE 的Live Templates
自定义一些方法
public static <T> T method(Class<T> clazz) {
Map<String, Object> params = new HashMap<>();
params.put(, );
String name = NameUtils.toUpperCaseForFirst(NameUtils.getMethodName());
String path = TYPE + "/" + name;
return RequestEmitter.emit(clazz, params, path);
}
改进:
public static <T> T getDeliveryAddressList(int start, Class<T> clazz) {
Map<String, Object> params = new HashMap<>();
params.put(GetDeliveryAddressListEntity.START, start);
String name = NameUtils.toUpperCaseForFirst(NameUtils.getMethodName());
String path = TYPE + "/" + name;
return RequestEmitter.emit(clazz, params, path);
}
由于各种封装,用例的编写变得异常简单,只需关注具体的业务逻辑即可
必需遵循规则才不会出错
一个接口:https://api.douban.com/v2/movie/top250?start=0&count=10
base url:https://api.douban.com/v2
path url:movie/top250
模块:movie
接口:top250
设计:
实体类已经自动化生成
请求封装已经自动化生成
DB 层还未实现
用例的设计需要取经