Java 如何在testNG报告中包含故障屏幕截图
目前,我正在以这种方式拍摄测试失败的屏幕截图:Java 如何在testNG报告中包含故障屏幕截图,java,selenium,webdriver,selenium-webdriver,testng,Java,Selenium,Webdriver,Selenium Webdriver,Testng,目前,我正在以这种方式拍摄测试失败的屏幕截图: @AfterMethod(alwaysRun=true) public void catchExceptions(ITestResult result){ Calendar calendar = Calendar.getInstance(); SimpleDateFormat formater = new SimpleDateFormat("dd_MM_yyyy_hh_mm_ss"); String methodName =
@AfterMethod(alwaysRun=true)
public void catchExceptions(ITestResult result){
Calendar calendar = Calendar.getInstance();
SimpleDateFormat formater = new SimpleDateFormat("dd_MM_yyyy_hh_mm_ss");
String methodName = result.getName();
if(!result.isSuccess()){
File scrFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
try {
FileUtils.copyFile(scrFile, new File((String) PathConverter.convert("failure_screenshots/"+methodName+"_"+formater.format(calendar.getTime())+".png")));
} catch (IOException e1) {
e1.printStackTrace();
}
}
}
我可以在TestNG报告链接或图片中包含我自己的屏幕截图吗?如果是,怎么做
我在网上找到的只是FEST框架。但是由于我已经在拍摄截图,我不想使用其他框架。是的,您可以在testng报告中包含指向您的截图的链接 您需要调用
org.testng.Reporter.log
方法,通过使用@Listeners({yourlister.class})注释您的测试类或所有测试类的父类,或者通过将侦听器添加到testng.xml
来编写指向报表的超链接
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="default">
<listeners>
<listener class-name="ScreenshotListener" />
</listeners>
<test name="Test">
<packages>
<package name="someTests.*"/>
</packages>
</test>
</suite>
定制一点ExtentReport可以提供非常有用的报告,在测试失败时准确捕获异常+屏幕截图。屏幕截图可以放在异常旁边,用户可以使用该异常来了解发生错误时网站在做什么 报告示例 试验 后置法
@AfterMethod
public void getResult(ITestResult result) throws Exception{
if(result.getStatus() == ITestResult.FAILURE)
{
extentlogger.log(Status.FAIL, MarkupHelper.createLabel(result.getThrowable() +
" - Test Case Failed", ExtentColor.RED));
try {
// get path of captured screenshot using custom failedTCTakeScreenshot method
String screenshotPath = failedTCTakeScreenshot( result);
extentlogger.fail("Test Case Failed Snapshot is below " +
extentlogger.addScreenCaptureFromPath(screenshotPath));
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
谢谢你的回答。结果中是否有链接/图片?比如在失败的方法名下或者类似的东西?是的。您需要首先创建一个侦听器类并将其添加到testng。您可以从testng.org获取详细信息。搜索侦听器。一旦创建了该类,就应该在其中编写一个重写ontestfailure方法的方法。每当testng发现故障时,就会执行此方法中的代码。您可以调用截图抓取方法并使用Reporter.log将超链接放置到该截图。然后您可以在failed testcases details.excelled下找到这个链接。工作得很有魅力。有趣的是,如此简短的描述是多么有用;)再详细一点。扩展TestNG TestListenerAdapter,实现上述问题中的onTestFailure,并在Reporter.log末尾添加(“”;,用@Listeners({yourListener.class})注释测试类或所有测试类的父类。您已经完成了。@Harini我假设您正在使用testNG插件从eclipse运行此测试。您需要转到项目的属性,然后转到testNG部分,并选中useprojecttestngjar选项。你的问题将是resolved@Cagy79如果库路径中有selenium-standalone.jar和testng.jar,则需要更改jar文件的顺序。我假设selenium.jar有一个旧版本的testNG,它导致了这种奇怪的行为。这并没有回答最初的问题
@Test (enabled=true)
public void verifySearch() {
extentlogger = extent.createTest("To verify verifySearch");
//Your other code here.....
soft.assertEquals("xxx", "xxxx");
soft.assertAll();
}
@AfterMethod
public void getResult(ITestResult result) throws Exception{
if(result.getStatus() == ITestResult.FAILURE)
{
extentlogger.log(Status.FAIL, MarkupHelper.createLabel(result.getThrowable() +
" - Test Case Failed", ExtentColor.RED));
try {
// get path of captured screenshot using custom failedTCTakeScreenshot method
String screenshotPath = failedTCTakeScreenshot( result);
extentlogger.fail("Test Case Failed Snapshot is below " +
extentlogger.addScreenCaptureFromPath(screenshotPath));
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}