N个B端产品,一个产品有N个http接口、一个http接口又有N个入参,每个入参都要作非法性测试,一遍遍修改报文、再进行post,重复劳动可想而知。尝试写了一个简陋的api自动化框架,具体如下。还待持续完善。
一、框架设计
1、每一个http接口定义成一个类,以接口号为类名,属性为该接口的各个入参,用构造方法实现数据初始化。
2、制作一个excel模板1作为基础模板,模板1包含TestCase No.、TestCase Name、req请求报文、check检查点、res返回报文、status用例执行状态这几个必须的字段。
3、调用getNewMould方法,传入接口号,生成适用于该接口的excel模板2。模板2相比模板1,增加了字段“#入参1”、”#入参2”……
4、维护模板2,编写用例,填入测试数据、检查点。用例执行时,若单元格为空,对应入参使用初始数据;若单元格值为”*NULL”,对应入参为空值,以作入参必输性测试;若单元格有值且不为“*NULL”,则以单元格值覆盖初始值。
5、调用oneInterface方法,逐条执行用例post http请求,将请求报文记到req字段下,响应报文记到res字段下,判断响应报文中是否还有check字段,然后将用例置成fail、pass、warn3种状态。
二、代码示例
1、以接口号为名定义一个类
package util;
public class 接口号{
String 入参1;
String 入参2;
......
String 入参N;
// 构造方法,初始化对象
接口号() {
this.入参1 = ......;
this.入参2 = ......;
......
this.入参N=......;
}
}
2、getNewMould方法
public static void getNewMould(String mouldpath, String sheetname,
String dstpath, String clzname) throws IOException,
ClassNotFoundException, InstantiationException,
IllegalAccessException {
FileInputStream ExcelFile = new FileInputStream(mouldpath);
ExcelWBook = new XSSFWorkbook(ExcelFile);
ExcelWSheet = ExcelWBook.getSheet(sheetname);