背景
搞过testng的同学都知道,testng自带的报告非常丑,而且有些字段的展示很不人性化,所以需要优化下报告
解决方案
尝试过一下开源的jar包,如ReportNG,奈何和目前使用的allure框架冲突,只能选择其他方法,google后发现可以重写testNG的生成报告的接口来实现自定义的报告,美化方面想到了直接套用bootstrap的框架
参考:https://stackoverflow.com/questions/19564862/customizing-summary-section-of-testng-emailable-report
首先尝试获取我们需要的关键信息,可以获取到我们想要的用例数量,通过个数,失败个数,跳过个数,类名,方法名,异常报错,时间
for
(ISuite suite : suites) {
Map<String, ISuiteResult> tests = suite.getResults();
for
(ISuiteResult r : tests.values()) {
ITestContext overview = r.getTestContext();
System.err.println(
"suite: "
+ overview.getName());
System.err.println(
"Stard Time: "
+overview.getStartDate());
System.err.println(
"End Time: "
+overview.getEndDate());
System.err.println(
"all methods num : "
+overview.getAllTestMethods().length);
//passed
System.err.println(
"passed: "
+ overview.getPassedTests().size());
Set<ITestResult> passedSet = overview.getPassedTests().getAllResults();
for
(ITestResult p : passedSet){
System.err.println(
"class: "
+p.getTestClass().getName() +
" | method: "
+p.getName());
}
//failed
System.err.println(
"failed: "
+ overview.getFailedTests().size());
Set<ITestResult> failedSet = overview.getFailedTests().getAllResults();
for
(ITestResult f : failedSet){
System.err.println(
"class: "
+f.getTestClass().getName()+
" | method: "
+f.getName() +
" | error: "
+ f.getThrowable());
}
//skipped
System.err.println(
"skipped: "
+ overview.getSkippedTests().size());
Set<ITestResult> skippedSet = overview.getSkippedTests().getAllResults();
for
(ITestResult s : skippedSet){
System.err.println(
"---- "
+s.getName() );
System.err.println(s.getThrowable());
}
System.err.println(
"=================================="
);
}
}
|
然后将获取到的数据写到一个html文件中,css样式采用放在html中, 类似下图
生成的html文件中包含了我们期望的数据,和bootstrap的css内容,因此报告看起来好看又人性化
所有评论(0)