抽取BaseCase类
继承特性应用
目前已有的3个案例类,有较多重复代码,针对重复代码抽取共性方法,形成basecase父类,所有案例类在继承父类,即可使用父类里封装好的共性方法
比如:设置请求头、往环境变量里存值方法
public class BaseCase {
//
public void setDefaultHeaders(Map<String, String> headers) {
//根据需求自定义默认请求头格式,示例如下:
headers.put("Content-Type", "application/json");
}
//抽取设置环境变量方法
public void setEnv(String body,String jsonPath,String envKey) {
Object o = JSONPath.read(body, jsonPath);
if (o != null) {
EnvUtils.env.put(envKey, o.toString());
}
}
}
case类继承BaseCase类调用父类封装好的方法
如下示例LoginCase继承BaseCase,直接调用setDefaultHeaders和setEnv方法
public class LoginCase extends BaseCase{
@Test(dataProvider = "Datas")
public void test(ApiInfo api, CaseInfo c) {
Map<String, String> headers = new HashedMap<String, String>();
//继承使用父类方法
setDefaultHeaders(headers);
String body = HttpUtils.call(api.getApiUrl(), api.getApiMethod(), c.getParams(), headers);
//继承使用父类方法
setEnv(body, "jsonpath表达式", "${环境变量名}");
}
@DataProvider
public Object[][] Datas() {
// 登录接口的在接口信息excel里的ApiId=2
Object[][] datas = ExcelUtils.getApiAndCaseByApiId("2");
return datas;
}
}