【问题标题】:Extent Report no generating html范围报告没有生成html
【发布时间】:2016-12-23 01:49:06
【问题描述】:

您好,我正在尝试通过 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()需要最后执行才能生成报告

标签: selenium selenium-webdriver testng extentreports extent


【解决方案1】:

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

我认为最后缺少extent.flush();

【讨论】:

  • 谢谢,但添加 extent.flush() 没有帮助;没有错误代码运行良好,但没有创建 html。
【解决方案2】:

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

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();
    }
}

【讨论】:

  • 谢谢拉詹;但是在复制粘贴下面的代码时,我收到关于 get 方法的错误,说“get method is undefined for Extent Reports”我正在使用 extentreports-java-2.41.1.jar
【解决方案3】:

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


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

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

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

参考:- ExtentReports Examples for Java

【讨论】:

    【解决方案4】:

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

    【讨论】:

      【解决方案5】:

      请试试这个:

      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();
      }
      }
      

      【讨论】:

        【解决方案6】:

        在末尾添加extent.flush()

        【讨论】:

          【解决方案7】:

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

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

          【讨论】:

            【解决方案8】:

            如果添加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>
            

            【讨论】:

              【解决方案9】:

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

              所以在 testng 注释中添加以下标签“alwaysRun=true” 例如@AfterMethod(alwaysRun = true)

              它有效:)

              【讨论】:

                【解决方案10】:

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

                【讨论】:

                  【解决方案11】:

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

                  test.log(LogStatus.INFO, "Test Started");
                  test.log(LogStatus.ERROR, "Test FAILED");
                  

                  【讨论】:

                    【解决方案12】:

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

                    【讨论】:

                      猜你喜欢
                      • 1970-01-01
                      • 1970-01-01
                      • 2019-08-04
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 2017-01-24
                      • 1970-01-01
                      • 2022-12-09
                      相关资源
                      最近更新 更多