Appium 测试报告--测试集报告

测试集中报告可以看成是一个总表,这时可以用Excel 的图表工具自动生成图表,整个测试集测试通过后再统计各个级别的报告

图表模板如下


public static void statistical() throws IOException{

String TestReport=System.getProperty("user.dir")+"\\测试报告\\测试报告.xlsx";

System.out.println("报告文件"+TestReport);

FileInputStream ReportFile = new FileInputStream(TestReport);

//创建工作本

XSSFWorkbook  ReportBook = new XSSFWorkbook(ReportFile);

//获取Sheet 名称

XSSFSheet TestStepSheet=ReportBook.getSheet("TestStep");

for (int i=1;i<=TestStepSheet.getLastRowNum();i++){

String txt=Excel.GetString(TestStepSheet, i,9 );

if (txt.equals("PASS")){

Constants.TestStepPass=Constants.TestStepPass+1;

}

else {

Constants.TestStepFail=Constants.TestStepFail+1;

}

}

XSSFSheet TestCaseSheet=ReportBook.getSheet("TestCase");

for (int i=1;i<=TestCaseSheet.getLastRowNum();i++){

String txt=Excel.GetString(TestCaseSheet, i,2 );

if (txt.equals("PASS")){

Constants.TestCasePass=Constants.TestCasePass+1;

}

else {

Constants.TestCaseFail=Constants.TestCaseFail+1;

}

System.out.println("TestCase Pass=="+Constants.TestCasePass+"TestCase Fail=="+Constants.TestCaseFail);

}

XSSFSheet TestSuiteSheet=ReportBook.getSheet("TestSuite");

for (int i=1;i<=TestSuiteSheet.getLastRowNum();i++){

String txt=Excel.GetString(TestSuiteSheet, i,1 );

if (txt.equals("PASS")){

Constants.TestSuitePass=Constants.TestSuitePass+1;

}

else {

Constants.TestSuiteFail=Constants.TestSuiteFail+1;

}

}

double TestStepRate=(double)Constants.TestStepPass/(Constants.TestStepPass+Constants.TestStepFail);

double TestCaseRate=(double)Constants.TestCasePass/(Constants.TestCasePass+Constants.TestCaseFail);

double TestSuiteRate=(double)Constants.TestSuitePass/(Constants.TestSuitePass+Constants.TestSuiteFail);

System.out.println("测试步骤通过率="+TestStepRate+"测试用例通过率=="+TestCaseRate+"测试套件通过率=="+TestSuiteRate);

XSSFSheet Test_Index_Sheet=ReportBook.getSheet("首页---数据统计");

//写入统计结果

if (Test_Index_Sheet!=null) {

XSSFRow Row=Test_Index_Sheet.getRow(2);

//数值型格式

XSSFCellStyle numStyle = ReportBook.createCellStyle();

numStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat("0"));

//双精度型格式

XSSFCellStyle doubleStyle = ReportBook.createCellStyle();

doubleStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat("0.00%"));

//写入测试套件的结果

XSSFCell  cell0=Row.createCell(0);

cell0.setCellValue(Constants.TestSuitePass);

cell0.setCellStyle(numStyle);

XSSFCell  cell1=Row.createCell(1);

cell1.setCellValue(Constants.TestSuiteFail);

cell1.setCellStyle(numStyle);

//写入测试套件的通过率

XSSFCell  cell2=Row.createCell(2);

cell2.setCellValue(TestSuiteRate);

cell2.setCellStyle(doubleStyle);

//写入测试用例的结果

XSSFCell  cell3=Row.createCell(3);

cell3.setCellValue(Constants.TestCasePass);

cell3.setCellStyle(numStyle);

XSSFCell  cell4=Row.createCell(4);

cell4.setCellValue(Constants.TestCaseFail);

cell4.setCellStyle(numStyle);

//写入测试用例的通过率

XSSFCell  cell5=Row.createCell(5);

cell5.setCellValue(TestCaseRate);

cell5.setCellStyle(doubleStyle);

//写入测试步骤的结果

XSSFCell  cell6=Row.createCell(6);

cell6.setCellValue(Constants.TestStepPass);

cell6.setCellStyle(numStyle);

XSSFCell  cell7=Row.createCell(7);

cell7.setCellValue(Constants.TestStepFail);

cell7.setCellStyle(numStyle);

//写入测试步骤的通过率

XSSFCell  cell8=Row.createCell(8);

cell8.setCellValue(TestStepRate);

cell8.setCellStyle(doubleStyle);

//将执行时间写入到对应单元格中

// Row.createCell(9).setCellValue(Constants.min);

//创建文件输出流

FileOutputStream fileOut = new FileOutputStream(TestReport);

// 写入文件输出流到Excel

ReportBook.write(fileOut);

//关闭文件流

fileOut.close();

//释放Excel

ReportFile.close();

}

else {

System.out.println("首页统计的Sheet 不存在");

}

}


上面那个模板因为有Excel 中的图表,不能删除,如果每次运行后怎么将历史数据清空呢,我们可以将清空数据放在脚本启动时也可以放在统计报告之前

清空操作逻辑是先将前一次的测试报告全数复制一份成以当前时间格式命名的文件


复制之后再清空除首页--统计报表之外的所有Sheet 报表

代码如下

//清除旧记录

public static void CleanData() throws IOException {

String TestReport=System.getProperty("user.dir")+"\\测试报告\\测试报告.xlsx";

SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss");

//生成时间戳

String  dateString = formatter.format(new Date());

File SourceFile=new File(TestReport);

File Destination=new File(System.getProperty("user.dir")+"\\测试报告\\"+dateString+".xlsx");

FileUtils.copyFile(SourceFile, Destination);

FileInputStream ReportFile = new FileInputStream(TestReport);

//创建工作本

try {

XSSFWorkbook  ReportBook = new XSSFWorkbook(ReportFile);

//移除Sheet

if (ReportBook.getSheet("TestStep")!=null) {

ReportBook.removeSheetAt(ReportBook.getSheetIndex("TestStep"));

}

if (ReportBook.getSheet("TestCase")!=null) {

ReportBook.removeSheetAt(ReportBook.getSheetIndex("TestCase"));

}

if (ReportBook.getSheet("TestSuite")!=null) {

ReportBook.removeSheetAt(ReportBook.getSheetIndex("TestSuite"));

}

//创建文件输出流

FileOutputStream fileOut = new FileOutputStream(TestReport);

// 写入文件输出流到Excel

ReportBook.write(fileOut);

//关闭文件流

fileOut.close();

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

//释放Excel

ReportFile.close();

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,858评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,372评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,282评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,842评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,857评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,679评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,406评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,311评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,767评论 1 315
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,945评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,090评论 1 350
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,785评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,420评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,988评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,101评论 1 271
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,298评论 3 372
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,033评论 2 355

推荐阅读更多精彩内容

  • 这个级别维度稍微粗一点,是统计到每一条用例的成功与失败情况,不记录具体哪一步出错,如果显示当前用例失败需要去对应了...
    长新阅读 911评论 0 1
  • 当我们用Excel 来管理测试用例时,先需要对每列作好定义,这里就按用例编写那一节介绍的模板来读取数据 模板如下 ...
    长新阅读 442评论 0 0
  • 创建新工程 打开Eclipse新建一个工程 点下一步 输入名称 点完成 新建一个目录用来存在第三方库文件 选择目录...
    长新阅读 2,207评论 3 1
  • 使用首先需要了解他的工作原理 1.POI结构与常用类 (1)创建Workbook和Sheet (2)创建单元格 (...
    长城ol阅读 8,427评论 2 25
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,639评论 18 399