范围报告没有生成HTML

时间:2016-08-16 15:38:04

标签: selenium selenium-webdriver testng extentreports extent

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

12 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:3)

查看文档:{​​{3}}`

我认为最后会遗漏extent.flush();

答案 2 :(得分:2)

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


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

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

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

参考文献: - ExtentReports Examples for Java

答案 3 :(得分: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();
    }
}

答案 4 :(得分: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();
}
}

答案 5 :(得分:1)

最后添加extent.flush()

答案 6 :(得分:1)

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

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

它有效:)

答案 7 :(得分:1)

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

答案 8 :(得分:0)

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

确保从NuGet Packages - ExtentReports 2.41.0

添加此版本

答案 9 :(得分: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>

答案 10 :(得分:0)

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

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

答案 11 :(得分:-2)

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