Extent Report未生成HTML

4

你好,我正在尝试通过Extent Report创建报告。代码没有错误并成功运行,但没有生成HTML报告。请问有人能帮忙吗?以下是我的代码 -

package ca.automation.com;

import org.testng.annotations.Test;
import com.relevantcodes.extentreports.ExtentReports;
import com.relevantcodes.extentreports.ExtentTest;
import org.testng.annotations.BeforeTest;
import org.junit.Assert;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.ie.InternetExplorerDriver;
import org.testng.annotations.AfterClass;

public class ExtentReport {

    WebDriver driver;
    ExtentReports extent;
    ExtentTest test;

    @BeforeTest
    public void startReport(){
        extent = new ExtentReports("C:\\Report.html", true);
    }

    @Test
    public void installapp() {
        test = extent.startTest("installapp");
        System.setProperty("webdriver.ie.driver", "C:\\Anuj\\Downloads\\IEDriverServer_Win32_2.46.0\\IEDriverServer.exe");
        driver = new InternetExplorerDriver();
        driver.manage().window().maximize();
        driver.get("https://www.tripadvisor.com/");
        String Title = driver.getTitle();
        Assert.assertTrue(Title.contains("Trip"));
        extent.endTest(test);
    }
}

exent.flush() 需要在最后执行,以生成报告。 - Ankur Gupta
12个回答

4

在测试方法的末尾添加extent.flush();,以将所有测试日志写入报告文件。


3

谢谢,但添加extent.flush()没有帮助;没有错误代码运行良好,但没有创建HTML。 - Anuj Shrivastav

2

为了将更改写入文件,必须调用flush()和close()方法。close()方法必须在测试结束前调用,因为它会关闭输出流。


在@AfterMethod方法中调用flush()方法,在@AfterSuite方法中调用close()方法。

@AfterMethod
public void afterMethod() {
    extent.flush();
}

@AfterSuite
public void afterSuiteMethod() {
    extent.close();
}

参考资料:- Java版ExtentReports示例


1
请检查是否执行了所有配置,例如您的@BeforeClass、@AfterClass等等...有时它们会被跳过,因此不会生成extent.html文件。 因此,请在testng注释中添加以下标签"alwaysRun=true" 例如:@AfterMethod(alwaysRun = true) 它可以正常工作 :)

1
在结尾处添加extent.flush()

1
即使在代码中添加了extent.flush(),我在testng项目中遇到了这个错误。未生成错误的原因是由于一个失败的断言,导致在执行 exent.flush()行时未被执行。在删除该断言脚本后,脚本正常工作并生成了文件。

1

这里是代码,只需将其复制粘贴到您的项目中即可。

import org.testng.annotations.Test;

import com.dell.patientregister.mobilewallet.test.PatientRegister_SmokeTest;
import com.relevantcodes.extentreports.ExtentReports;
import org.testng.annotations.BeforeTest;
import org.junit.Assert;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.ie.InternetExplorerDriver;

public class ExtentReport {

    WebDriver driver;
    ExtentReports extent;

    @Test
    public void installapp() {

ExtentReports extent = ExtentReports.get(ExtentReport.class);

        extent.init("myreport.html", true);
         extent.startTest(" Install App");

         System.setProperty("webdriver.ie.driver", "C:\\Anuj\\Downloads\\IEDriverServer_Win32_2.46.0\\IEDriverServer.exe");
         driver = new InternetExplorerDriver();
         driver.manage().window().maximize();
         driver.get("https://www.tripadvisor.com/");
         String Title = driver.getTitle();
         Assert.assertTrue(Title.contains("Trip"));
         extent.endTest();
    }
}

谢谢Rajan;但是当我复制粘贴下面的代码时,我收到了一个关于“Extent Reports”的get方法未定义的错误。我正在使用extentreports-java-2.41.1.jar。 - Anuj Shrivastav

1

Please try this:

import org.testng.annotations.Test;

import com.dell.patientregister.mobilewallet.test.PatientRegister_SmokeTest;
import com.relevantcodes.extentreports.ExtentReports;
import org.testng.annotations.BeforeTest;
import org.junit.Assert;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.ie.InternetExplorerDriver;

public class ExtentReport {

WebDriver driver;
ExtentReports extent;
@Test
public void installapp() {

ExtentReports extent = ExtentReports.get(ExtentReport.class);
extent.init("myreport.html", true);
test =  extent.startTest(" Install App");
System.setProperty("webdriver.ie.driver","C:\\Anuj\\Downloads\\IEDriverServer_Win32_2.46.0\\IEDriverServer.exe");
     driver = new InternetExplorerDriver();
     driver.manage().window().maximize();
     driver.get("https://www.tripadvisor.com/");
     String Title = driver.getTitle();
     Assert.assertTrue(Title.contains("Trip"));
     test.Log(LogStatus.Pass, "Login Successful");
     extent.endTest(test);
     extent.flush();
     extent.close();
}
}

0
如果即使添加了extent.flush()也不能正常工作,请在pom.xml中添加以下依赖项进行尝试。
<dependency>
    <groupId>org.jsoup</groupId>
    <artifactId>jsoup</artifactId>
    <version>1.8.3</version>
</dependency>
<dependency>
    <groupId>org.xerial</groupId>
    <artifactId>sqlite-jdbc</artifactId>
    <version>3.8.11.1</version>
</dependency>
<dependency>
    <groupId>org.freemarker</groupId>
    <artifactId>freemarker</artifactId>
    <version>2.3.23</version>
</dependency>
<dependency>
    <groupId>org.mongodb</groupId>
    <artifactId>mongodb-driver</artifactId>
    <version>3.0.4</version>
</dependency>

0

我在生成Extent报告时遇到了同样的问题。以下解决方案适用于我。

请在末尾添加以下命令: extent.EndTest(test); extent.Flush();

请确保您从NuGet Packages中添加此版本 - ExtentReports 2.41.0


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接