Экстентные отчеты: журналы добавляются к одному тесту в отчете

У меня нет отдельных журналов / записей для разных тестовых случаев. Т.е. журналы добавляются к единому тесту в созданном отчете об экстенте. Использование Extent Report версии 2.41.1 ..

Образец отчета:  Расширенные журналы отчетов добавляются в единый тестовый набор

МОЙ код выглядит так:

    Base Class of TestNG:

  public static ExtentReports report;
  public static ExtentTest logger;

  @BeforeSuite
  @Parameters({"BrowserName"})
  public void beforeSuite(@Optional("Firefox") String BrowserName) 
  {
      date = new Date();
      SimpleDateFormat ft = new SimpleDateFormat ("dd-MM-yyyy");
      String TodaysDate = ft.format(date);
      prop = ResourceBundle.getBundle("DataFile");
      Driver = Browser_Factory_FSQA_Class.getBrowser(BrowserName);
      path = "//home//workspace//....//FSQA.ExtentReports//FSQA_ExtentReport_" + TodaysDate;
      File f=new File(path);
      if(!f.exists())
      {
          report = new ExtentReports(path);
      }
  }
  @BeforeTest
  @Parameters({"BrowserName"})
  public void SetUpConfig(@Optional("Firefox") String BrowserName)
  {
     report = new ExtentReports(path, false,DisplayOrder.NEWEST_FIRST);
     report.loadConfig(new File("//home//......//extent-config.xml"));
     report.addSystemInfo("Build-Tag", prop.getString("Build-Tag"))
                .addSystemInfo("Selenium ", prop.getString("SelVer"))
                .assignProject(prop.getString("Application"))
                .addSystemInfo("Envirnoment", prop.getString("AppEnvirnoment"))
                .addSystemInfo("Extent", prop.getString("ExtRpVer"));
     logger = report.startTest(this.getClass().getSimpleName());
     logger.log(LogStatus.INFO,this.getClass().getSimpleName() +" will Run on "+ BrowserName +" Browser");
     Driver.get(prop.getString("URL"));
     Driver.manage().window().maximize();
     Driver.manage().window().maximize();
     Driver.manage().timeouts().implicitlyWait(45, TimeUnit.SECONDS);
  }
  @AfterMethod(alwaysRun=true)
  public void afterMethod(ITestResult result) throws IOException
  {
    try
    { 
        if(result.getStatus()==ITestResult.FAILURE)
        {
            String res = captureScreenshot(Driver, result.getName());
            String image= logger.addScreenCapture(res);
            System.out.println(image);
            String TestCaseName = this.getClass().getSimpleName() + " Test Case Failure and Title/Boolean Value Failed";
            logger.log(LogStatus.FAIL, TestCaseName  + logger.addScreenCapture(res));
        }
        else if(result.getStatus()==ITestResult.SUCCESS)
        {
            logger.log(LogStatus.PASS, this.getClass().getSimpleName() + " Test Case Success and Title Verified"); 
        }
        else if(result.getStatus()==ITestResult.SKIP)
        {
            logger.log(LogStatus.SKIP, this.getClass().getSimpleName() + " Test Case Skipped");
        }
    }
    catch(Throwable t)
    {
        logger.log(LogStatus.ERROR,t.getMessage());
        }      
      }

  public String captureScreenshot(WebDriver Driver, String TestName)
    {
   try 
    {
            date = new Date();
        SimpleDateFormat ft = new SimpleDateFormat ("dd_MM_yyyy");
        String TodaysDate = ft.format(date);
            TakesScreenshot ts=(TakesScreenshot)Driver;
        File source=ts.getScreenshotAs(OutputType.FILE);
        Sc_Destination = prop.getString("SC_Dest")+TestName+"__"+TodaysDate+".png";
        FileUtils.copyFile(source,new File(Sc_Destination));
        logger.log(LogStatus.FAIL,image, "Title verification");*/
        return Sc_Destination;
    } 
    catch (Exception e)
    {
        System.out.println("Exception while taking screenshot "+e.getMessage());
    } 
  return Sc_Destination;
}

  @AfterTest(alwaysRun=true)
public void AfterTest()
{
    Driver.close();
    report.endTest(logger);
    report.flush();
}

  @AfterSuite
 public void AfterSuite()
{
      report.close();
      Driver.quit();
}

Мои тесты - это отдельные классы, расширяющие этот базовый класс: TC1:

public classTC1 extends BaseTestNG
  {
  @Test(groups = {"Happy_Path"} , description="TC1")
public void TestCase1() throws InterruptedException, Exception
  {
      logger.log(LogStatus.INFO, " Test Case2 Block Entered");
      Thread.sleep(4000); 
      ......
              ......
      logger.log(LogStatus.INFO, "Assert Flag Received");
      Thread.sleep(4000); 
      Assert.assertTrue(AssertFlag);        
  }
  }

TC2:

public classTC2 extends BaseTestNG
  {
  @Test(groups = {"Happy_Path"} , description="TC2")
public void TestCase2() throws InterruptedException, Exception
  {
      logger.log(LogStatus.INFO, " Test Case2 Block Entered");
      Thread.sleep(4000); 
      ......
              ......
       logger.log(LogStatus.INFO, "Assert Flag Received");
      Thread.sleep(4000); 
      Assert.assertTrue(AssertFlag);        
  }
  }

Я использую классы POM вместе с TestNG и запускаю Testcases с помощью testng.xml.

Я могу создать отчет о экстенте, но не могу различать журналы TC1 и TC2, т.е. все журналы тестовых случаев добавляются к одному TestCase, как показано на снимке экрана выше.

Я хочу, чтобы каждый журнал тестового набора / запись находился в отдельных строках в отчетах об экстенте.

Кто-нибудь может исправить ошибку в моем коде и помочь мне.

Заранее спасибо!!!


person Ag_Yoge    schedule 14.10.2016    source источник


Ответы (1)


Я думаю, вам следует инициализировать свой регистратор в BeforeMethod и использовать report.flush () в AfterMethod. Это может решить вашу проблему.

person optimistic_creeper    schedule 14.10.2016
comment
внес изменения и инициализировал регистратор в BeforeMethod и сбросил отчет в AfterMethod .. Это сработало .. Спасибо, дружище .. - person Ag_Yoge; 14.10.2016
comment
@optimist_creeper, у меня здесь такая же проблема? stackoverflow.com/questions/47227788/ - person paul; 16.11.2017
comment
@Ag_Yoge, не могли бы вы поделиться своим кодом. Как ты это сделал? Как это решило вашу проблему. - person paul; 18.11.2017
comment
@paul: я только что завершил тест и сбросил отчет в самом методе AfterMethod в вышеупомянутом коде и закрыл отчет в методе AfterTest - person Ag_Yoge; 20.11.2017