Невозможно генерировать отчеты об экстенте, когда классы работают параллельно с TestNG.

Когда классы работают параллельно с TestNG, мы не получаем Extent Report, но отчет TestNG обновляется. Пожалуйста, найдите приведенный ниже пример кода и версии, которые я использую. Если мы запускаем только один класс (TestClass1.java), то будет создан Extent Report.

Селен версии 3.4.0

Версия отчета об экстенте: 3.0.6

ExtentReportBase.java

ExtentHtmlReporter htmlReporter;
ExtentReports extent;
ExtentTest test;


@BeforeTest
public void setUp()
{
    //where we need to generate the report
    htmlReporter = new ExtentHtmlReporter(System.getProperty("user.dir")+"/test-output/MyReport.html");
    extent = new ExtentReports();
    extent.attachReporter(htmlReporter);

    // Set our document title, theme etc..
    htmlReporter.config().setDocumentTitle("My Test Report");
    htmlReporter.config().setReportName("Test Report");
    htmlReporter.config().setTestViewChartLocation(ChartLocation.TOP);
    htmlReporter.config().setTheme(Theme.DARK); 

}

@AfterMethod
public void getResult(ITestResult result)
{
    if(result.getStatus()==ITestResult.FAILURE)
    {
        test.log(Status.FAIL, MarkupHelper.createLabel(result.getName() + "Test Case failed due to below issues", ExtentColor.RED));
        test.fail(result.getThrowable());
    }

    else if(result.getStatus()==ITestResult.SUCCESS)
    {
        test.log(Status.PASS, MarkupHelper.createLabel(result.getName() + "Test Case Passed", ExtentColor.GREEN));
    }

    else
    {
        test.log(Status.SKIP, MarkupHelper.createLabel(result.getName() + "Test Case skipped", ExtentColor.YELLOW));
    }

}

@AfterSuite
public void tearDown()
{
    extent.flush();
}

TestClass1.java

@Test
public void functionality1Test1()
{
    test = extent.createTest("functionality1Test1");
    Assert.assertTrue(1 > 0);
}

@Test
public void functionality1Test2()
{
    test = extent.createTest("functionality1Test2");
    Assert.assertEquals("Google", "goo");
}

@Test
public void functionality1Test3()
{
    test = extent.createTest("functionality1Test3");
    Assert.assertNotEquals("Google", "Google");
}    

TestClass2.java

@Test
public void functionality2Test1()
{
    test = extent.createTest("functionality2Test1");
    Assert.assertTrue(1 > 0);
}

@Test
public void functionality2Test2()
{
    test = extent.createTest("functionality2Test2");
    Assert.assertEquals("Google", "goo");
}

@Test
public void functionality2Test3()
{
    test = extent.createTest("functionality2Test3");
    Assert.assertNotEquals("Google", "Google");
}

testng.xml

`<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite" parallel="classes">
  <test name="Test">
    <classes>
      <class name="TestExtentReport.TestClass1"/>
      <class name="TestExtentReport.TestClass2"/>
    </classes>
  </test> <!-- Test -->
</suite> <!-- Suite -->`

person Suraj    schedule 08.06.2017    source источник
comment
Можете ли вы опубликовать свой файл testng.xml, из которого вы запускаете свой тест.   -  person Ankur    schedule 08.06.2017
comment
Теперь я добавил файл testng.xml   -  person Suraj    schedule 08.06.2017


Ответы (2)


использовать jar отчета об экстенте 3.x.x

и в вашем базовом классе используйте переменные степени, такие как:

static ExtentHtmlReporter htmlReporter; 
static ExtentReports reports;
ExtentTest logger;
person shailesh    schedule 11.05.2018

Эти 3 являются переменными экземпляра для каждого вызова класса, который необходимо инициализировать, поэтому объявите их статическими, чтобы решить вашу проблему.

ExtentHtmlReporter htmlReporter;
ExtentReports extent;
ExtentTest test;

Объявить их как -

static ExtentHtmlReporter htmlReporter;
static ExtentReports extent;
static ExtentTest test; 

Я пробовал с тем же кодом. Это работает нормально для меня.

Пожалуйста, обратитесь к приложенному скриншоту. ExtentReportResultBaseClass

Сообщите мне, если это сработает.

person Ankur    schedule 09.06.2017
comment
Если это решило вашу проблему, пожалуйста, примите ответ. - person Ankur; 12.06.2017
comment
при параллельном запуске мы не можем использовать тест Extent как статический.. потому что он может не дать правильный отчет.. потому что во время сброса, если у нас есть результат 2 или 3 тестовых случаев, он может добавить все один тестовый пример - person ChanGan; 11.10.2018