Невозможно генерировать отчеты о расширении, когда классы, проходящие параллельно с TestNG

74
4

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

Селен версии 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 -->'

спросил(а) 2017-06-08T21:20:00+03:00 3 года, 8 месяцев назад
1
Решение
61

использовать отчет о размере

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

static ExtentHtmlReporter htmlReporter; 
static ExtentReports reports;
ExtentTest logger;

ответил(а) 2018-05-11T07:01:00+03:00 2 года, 9 месяцев назад
-4

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

ExtentHtmlReporter htmlReporter;
ExtentReports extent;
ExtentTest test;

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

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

Я пробовал с тем же кодом. Он отлично работает для меня.

См. Прилагаемый скриншот. ExtentReportResult BaseClass

Дай мне знать, если это работает.

ответил(а) 2017-06-09T13:56:00+03:00 3 года, 8 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема