4、 在build.xml文件中加入監(jiān)聽(tīng)器,配置如下,配置完成后通過(guò)ant運(yùn)行TestNG測(cè)試用例后可以在生成的Html結(jié)果報(bào)告中查看效果
<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、 如果您不習(xí)慣4的做法,可以在testng.xml中加入如下的監(jiān)聽(tīng)器,配置完成后右鍵testng.xml文件運(yùn)行測(cè)試用例即可
<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擴(kuò)展-失敗用例自動(dòng)截圖
由于截圖功能在不同的測(cè)試框架上API會(huì)不同,所以當(dāng)前Arrow中沒(méi)有把這個(gè)功能集成進(jìn)來(lái),但是如果你需要該功能也可以很方便的進(jìn)行擴(kuò)展。
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 {
//這里可以調(diào)用不同框架的截圖功能
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);
//把截圖寫(xiě)入到Html報(bào)告中方便查看
Reporter.log("<img src="../" + filePath + ""/>");
}
}
3、修改完成后重新運(yùn)行測(cè)試用例,即可實(shí)現(xiàn)失敗自動(dòng)截圖,同時(shí)會(huì)把截圖寫(xiě)入到Html結(jié)果報(bào)告中,方便定位問(wèn)題,如圖3。
后,歡迎大家使用以及共同改進(jìn)Arrow,方便大家基于TestNG的測(cè)試工作。