4

您好我正在尝试通过范围报告创建报告;该代码没有给出错误并成功运行,但没有生成 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);
    }
}
4

12 回答 12

4

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

于 2016-11-17T05:38:27.683 回答
3

检查文档:http ://extentreports.relevantcodes.com/java/#start-end- tests`

我想extent.flush();最后不见了。

于 2016-08-16T16:02:37.627 回答
2

需要为范围对象调用 flush() 和 close() 才能将更改写入文件。调用 close() 必须在测试结束之前完成,因为它会关闭输出流


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

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

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

参考:- Java 的 ExtentReports 示例

于 2016-08-23T01:14:20.420 回答
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();
    }
}
于 2016-08-17T05:31:51.303 回答
1

extent.flush()在最后添加。

于 2017-02-09T21:12:32.960 回答
1

请检查是否所有配置都已执行。即您的@BeforeClass、@AfterClass 等...有时它们会被跳过,因此不会生成extent.html。

因此,使用 testng 注释添加以下标签“alwaysRun=true”,例如@AfterMethod(alwaysRun = true)

有用 :)

于 2020-01-16T18:44:13.670 回答
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);
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();
}
}
于 2017-01-24T14:03:07.600 回答
1

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

于 2020-05-15T16:19:24.930 回答
0

在您的测试中,您没有在报告中记录任何内容。如果未记录任何内容,则不会生成任何报告。如下所示,尝试在报告中记录一些内容。同样根据断言的状态,您可以登录PASS/登录FAILextentreport

test.log(LogStatus.INFO, "Test Started");
test.log(LogStatus.ERROR, "Test FAILED");
于 2020-07-28T14:19:48.133 回答
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>
于 2018-04-11T05:48:37.497 回答
0

我在生成范围报告时遇到了同样的问题。以下解决方案对我有用。请在末尾添加这些命令:extent.EndTest(test); 范围.Flush();

确保从 NuGet 包添加此版本 - ExtentReports 2.41.0

于 2017-04-07T15:08:16.770 回答
-2

添加 bson-xxx.jar 解决了我同样的问题。可以试一试。

于 2021-07-19T17:40:34.410 回答