大家好,关于外国分类目录网站源码分享很多朋友都还不太明白,今天小编就来为大家分享关于常用的国外分类法的知识,希望对各位有所帮助!
一、引言
在本文中,我将详细介绍如何将ExtentReports测试报告与TestNG集成。
二、ExtentReports简介
主要特点:
生成的报告简洁美观生成的单html方便Jenkins集成发邮件自带集中展示历史报告的服务端支持Java和.Net
TestNG原生报告有点丑,信息整理有点乱。ExtentReports是用于替换TestNG原生报告。当然也可以使用ReportNg,个人偏好ExtentReports样式。
官网已经给了很多demo了,大家可以参考练习,这里根据个人经验进行了配置。
官网:http://extentreports.com/客户端:https://github.com/anshooarora/extentreports-java/commits/master服务端:https://github.com/anshooarora/extentx
三、具体步骤
Step-1:添加Maven依赖包
引入pom.xml
\n<!–引入extentreports相关包–>\n<dependency>\n<groupId>com.aventstack</groupId>\n<artifactId>extentreports</artifactId>\n<version>3.1.5</version>\n<scope>provided</scope>\n</dependency>\n<dependency>\n<groupId>com.vimalselvam</groupId>\n<artifactId>testng-extentsreport</artifactId>\n<version>1.3.1</version>\n</dependency>\n<dependency>\n<groupId>com.relevantcodes</groupId>\n<artifactId>extentreports</artifactId>\n<version>2.41.2</version>\n</dependency>\n<!–引入testng测试框架–>\n<dependency>\n<groupId>org.testng</groupId>\n<artifactId>testng</artifactId>\n<version>6.14.3</version>\n<scope>compile</scope>\n</dependency>
Step-2:重写ExtentTestNgFormatter类
主要基于以下两项原因:
支持报告中展示更多状态类型的测试结果,例如:成功、失败、警告、跳过等。因为不支持cdn.rawgit.com访问,故替css访问方式。
创建MyExtentTestNgFormatter类
下载ExtentReportes源码,找到ExtentTestNgFormatter类,Listener目录下创建MyExtentTestNgFormatter.java类直接继承ExtentTestNgFormatter类。
publicclassMyExtentTestNgFormatterextendsExtentTestNgFormatter{
解决CDN无法访问
构造方法加入
htmlReporter.config().setResourceCDN(ResourceCDN.EXTENTREPORTS);
具体代码如下:
ublicMyExtentTestNgFormatter(){\nsetInstance(this);\ntestRunnerOutput=newArrayList<>();\nStringreportPathStr=System.getProperty(&34;);\nFilereportPath;\n\ntry{\nreportPath=newFile(reportPathStr);\n}catch(NullPointerExceptione){\nreportPath=newFile(TestNG.DEFAULT_OUTPUTDIR);\n}\n\nif(!reportPath.exists()){\nif(!reportPath.mkdirs()){\nthrownewRuntimeException(&34;);\n}\n}\n\nFilereportFile=newFile(reportPath,&34;);\nFileemailReportFile=newFile(reportPath,&34;);\n\nhtmlReporter=newExtentHtmlReporter(reportFile);\nEmailReporteremailReporter=newEmailReporter(emailReportFile);\nreporter=newExtentReports();\n//如果cdn.rawgit.com访问不了,可以设置为:ResourceCDN.EXTENTREPORTS或者ResourceCDN.GITHUB\nhtmlReporter.config().setResourceCDN(ResourceCDN.EXTENTREPORTS);\nreporter.attachReporter(htmlReporter,emailReporter);\n}
重写onstart方法
重写onstart方法功能。新建一个类名为MyReporter,一个静态ExtentTest的引用。
Listener包下MyReporter.java
publicclassMyReporter{\npublicstaticExtentTestreport;\n}
MyExtentTestNgFormatter.java
publicvoidonStart(ITestContextiTestContext){\nISuiteiSuite=iTestContext.getSuite();\nExtentTestsuite=(ExtentTest)iSuite.getAttribute(SUITE_ATTR);\nExtentTesttestContext=suite.createNode(iTestContext.getName());\n//将MyReporter.report静态引用赋值为testContext。\n//testContext是@Test每个测试用例时需要的。report.log可以跟随具体的测试用例。另请查阅源码。\nMyReporter.report=testContext;\niTestContext.setAttribute(&34;,testContext);\n}
自定义配置
测试报告默认是在工程根目录下创建test-output/文件夹下,名为report.html、emailable-report.html。可根据各自需求在构造方法中修改。
publicMyExtentTestNgFormatter(){\nsetInstance(this);\ntestRunnerOutput=newArrayList<>();\n//reportPath报告路径\nStringreportPathStr=System.getProperty(&34;);\nFilereportPath;\n\ntry{\nreportPath=newFile(reportPathStr);\n}catch(NullPointerExceptione){\nreportPath=newFile(TestNG.DEFAULT_OUTPUTDIR);\n}\n\nif(!reportPath.exists()){\nif(!reportPath.mkdirs()){\nthrownewRuntimeException(&34;);\n}\n}\n//报告名report.html\nFilereportFile=newFile(reportPath,&34;);\n//邮件报告名emailable-report.html\nFileemailReportFile=newFile(reportPath,&34;);\n\nhtmlReporter=newExtentHtmlReporter(reportFile);\nEmailReporteremailReporter=newEmailReporter(emailReportFile);\nreporter=newExtentReports();\nreporter.attachReporter(htmlReporter,emailReporter);\n}
report.log
report.log支持多种玩法
//根据状态不同添加报告。型如警告\nMyReporter.report.log(Status.WARNING,&34;+String.valueOf(time));
直接从TestClass中运行时会报MyReporter.report的空指针错误,需做判空处理。
Step-3:配置监听
在测试集合testng.xml文件中导入Listener监听类。
<listeners>\n<listenerclass-name=&34;/>\n</listeners>
Step-4:配置报告
extentreporters支持报告的配置。目前支持的配置内容有title、主题等。先在src/resources/目录下添加config/report/extent-config.xml。
<?xmlversion=&34;encoding=&34;?>\n<extentreports>\n<configuration>\n<timeStampFormat>yyyy-MM-ddHH:mm:ss</timeStampFormat>\n<!–reporttheme–>\n<!–standard,dark个人喜好暗色–>\n<theme>dark</theme>\n\n<!–documentencoding–>\n<!–defaultstoUTF-8–>\n<encoding>UTF-8</encoding>\n\n<!–protocolforscriptandstylesheets–>\n<!–defaultstohttps–>\n<protocol>https</protocol>\n\n<!–titleofthedocument–>\n<documentTitle>QA-接口自动化测试报告</documentTitle>\n\n<!–reportname-displayedattop-nav–>\n<reportName>QA-接口自动化测试报告</reportName>\n\n<!–reportheadline-displayedattop-nav,afterreportHeadline–>\n<reportHeadline>接口自动化测试报告</reportHeadline>\n\n<!–globaldateformatoverride–>\n<!–defaultstoyyyy-MM-dd–>\n<dateFormat>yyyy-MM-dd</dateFormat>\n\n<!–globaltimeformatoverride–>\n<!–defaultstoHH:mm:ss–>\n<timeFormat>HH:mm:ss</timeFormat>\n\n<!–customjavascript–>\n<scripts>\n<![CDATA[\n$(document).ready(function(){\n\n});\n]]>\n</scripts>\n\n<!–customstyles–>\n<styles>\n<![CDATA[\n\n]]>\n</styles>\n</configuration>\n</extentreports>
Step-5:配置系统系统
config下新建MySystemInfo类继承SystemInfo接口
publicclassMySystemInfoimplementsSystemInfo{\n@Override\npublicMap<String,String>getSystemInfo(){\n\nMap<String,String>systemInfo=newHashMap<>();\nsystemInfo.put(&34;,&34;);\n\nreturnsystemInfo;\n}\n}
可用于添加系统信息,例如:db的配置信息,人员信息,环境信息等。根据项目实际情况添加。至此,extentreports美化报告完成。
Step-6:添加测试用例
publicclassTestMethodsDemo{\n\n@Test\npublicvoidtest1(){\nAssert.assertEquals(1,2);\n}\n\n@Test\npublicvoidtest2(){\nAssert.assertEquals(1,1);\n}\n\n\n@Test\npublicvoidtest3(){\nAssert.assertEquals(&34;,&34;);\n}\n\n\n@Test\npublicvoidlogDemo(){\nReporter.log(&34;);\nthrownewRuntimeException(&34;);\n}\n}
Step-7:测试用例suite
<!DOCTYPEsuiteSYSTEM&34;>\n\n<suitename=&34;verbose=&34;preserve-order=&34;>\n<parametername=&34;value=&34;/>\n<parametername=&34;value=&34;/>\n\n<testname=&34;preserve-order=&34;>\n<classes>\n<classname=&34;/>\n</classes>\n</test>\n\n<listeners>\n<listenerclass-name=&34;/>\n</listeners>\n</suite>
四、测试报告
1、HTMLResport示例
2、EmailReport示例
五、工程目录
源码地址:
https://github.com/zuozewei/blog-example/tree/master/Java-api-test/05-testreport/springboot-extentreport-demo1
END,本文到此结束,如果可以帮助到大家,还望关注本站哦!