4、 在build.xml文件中加入监听器,配置如下,配置完成后通过ant运行TestNG测试用例后可以在生成的Html结果报告中查看效果
<target name="testng"> <mkdir dir="test-output" /> <testng outputDir="test-output" haltonfailure="false" listeners="com.netease.qa.testng.PowerEmailableReporter, com.netease.qa.testng.RetryListener, com.netease.qa.testng.TestResultListener"> <xmlfileset dir="." includes="testng.xml" /> </testng> </target> |
5、 如果您不习惯4的做法,可以在testng.xml中加入如下的监听器,配置完成后右键testng.xml文件运行测试用例即可
<listeners> <listener class-name="com.netease.qa.testng.TestResultListener" /> <listener class-name="com.netease.qa.testng.RetryListener" /> <listener class-name="com.netease.qa.testng.PowerEmailableReporter" /> </listeners> |
四、Arrow扩展-失败用例自动截图
由于截图功能在不同的测试框架上API会不同,所以当前Arrow中没有把这个功能集成进来,但是如果你需要该功能也可以很方便的进行扩展。
1、 在这里下载Arrow的源代码
2、 修改TestResultListener类,在onTestSkipped以及onTestFailure方法中加入如下代码
@Override public void onTestFailure(ITestResult tr) { super.onTestFailure(tr); saveScreenShot(tr); } @Override public void onTestSkipped(ITestResult tr) { super.onTestSkipped(tr); saveScreenShot(tr); } private void saveScreenShot(ITestResult tr) { SimpleDateFormat formatter = new SimpleDateFormat("yyyy_MM_dd_HH_mm_ss"); String mDateTime = formatter.format(new Date()); String fileName = mDateTime + "_" + tr.getName(); String filePath = ""; try { //这里可以调用不同框架的截图功能 File screenshot = ((TakesScreenshor)webdriver).getScreenshotas(OutputType.FILE); filePath = “screenshot/” + filename + “.jpg” File destFile = new File(filePath); FileUtils.copyFile(screenshot, destFile); } catch (Exception e) { filePath = fileName + " firefox tackScreentshot Failure:" + e.getMessage(); logger.error(filePath); } if (!"".equals(filePath)) { Reporter.setCurrentTestResult(tr); Reporter.log(filePath); //把截图写入到Html报告中方便查看 Reporter.log("<img src=\"../" + filePath + "\"/>"); } } |
3、修改完成后重新运行测试用例,即可实现失败自动截图,同时会把截图写入到Html结果报告中,方便定位问题,如图3。
图3
最后,欢迎大家使用以及共同改进Arrow,方便大家基于TestNG的测试工作。