java发送请求-接口数据存储到数据库沉淀之TestRun优化
代码
public class TestRun {
private String filePath = null;
private static Logger logger = Logger.getLogger(TestRun.class);
private List list = new ArrayList();
@Parameters({ "filePathParam" })
@BeforeTest
public void beforeTest(String filePath) {
this.filePath = filePath;
logger.info("文件目录:" + filePath);
}
@DataProvider(name = "testcasedata")
public Object[][] dp() throws Exception {
ExcelUtil excelUtil = new ExcelUtil(this.filePath);
logger.info("实例化ExcelUtil类得到excelUtil对象,将Excel的内容,通过遍历行列存入数组中");
return excelUtil.getArrayCellValue(0);
}
@Test(dataProvider = "testcasedata")
public void httpReq(String id,String isExec,String testCase,String reqType,String reqHost,
String reqInterface,String reqData,String expResult,String isDep,String depKey) throws Exception{
//初始化
String reqUrl = reqHost + reqInterface;
String actResult = null;
Reporter.log("用例id" + id);
Reporter.log("用例描述" + testCase);
Reporter.log("请求方法" + reqType);
Reporter.log("请求接口" + reqUrl);
//处理依赖接口的reqData
logger.info("通过PatternUtil类中的handlerReqDataOfDep方法,处理依赖接口的请求参数,处理前:" + reqData);
reqData = PatternUtil.handlerReqDataOfDep(reqData);
logger.info("通过PatternUtil类中的handlerReqDataOfDep方法,处理依赖接口的请求参数,处理后:" + reqData);
Reporter.log("请求参数" + reqData);
//发送请求进行接口测试
if("YES".equals(isExec)) {
if("POST".equals(reqType)) {
actResult = HttpRequestUtil.sendPost(reqUrl, reqData);
logger.info("发送POST请求,服务器返回值" + actResult);
}else {
actResult = HttpRequestUtil.sendGet(reqUrl, reqData);
logger.info("发送GET请求,服务器返回值" + actResult);
}
}else {
logger.info("不执行测试用例,因为Excel中Test_is_exec为NO");
Reporter.log("不执行测试用例,因为Excel中Test_is_exec为NO");
}
//解决接口依赖问题
if("YES".equals(isDep)) {
PatternUtil.storeDepKeyValue(depKey, actResult);
logger.info("通过PatternUtil类中的storeDepKeyValue方法,存储被依赖接口的返回值");
}
//实际值与预期值比对到db
list.add(new AutoLog(testCase, reqType, reqUrl, reqData, expResult, actResult,
PatternUtil.compareResultToDb(expResult, actResult),DateTimeUtil.getDateTime()));
//实际值与预期值比对到Reportng
logger.info("通过PatternUtil类中的compareResult方法,进行预期值和实际值比对");
PatternUtil.compareResultToReportng(expResult, actResult);
}
@AfterTest
public void testDataToDb() throws Exception {
DbcpUtil.batchInsertData(list);
}
}