2016-10-14 18 views
0

異なるテストケースのログ/エントリを個別に取得できません。つまり、生成されたエクステントレポート内の単一のテストケースにログが追加されています。 Extent Report Logs Geting Appended to Single Test Caseエクステントレポート:レポートの単一のテストケースにログが追加される

私のコードはこのように書きます: TC1:

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

私のテストでは、この基本クラスを拡張セパレートClasesあるエクステントのレポートバージョン2.41.1 ..

レポートのサンプルを用いて

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

私はTestNGとともにPOMクラスを使用し、testng.xmlを使用してテストケースを実行しています。

私はTC1 &を区別するためにエクステント・レポートを生成することができますができないのですTC2ログすなわち上のスクリーンショットに示すように、すべてのテストケースのログは、単一のTestCaseに追加取得しています。

エクステント・レポート内のテスト・ケース・ログ/エントリを別々の行に入れたいとします。

誰でも自分のコードの間違いを訂正して助けてください。

ありがとうございました!!!

答えて

0

私は、AfterMethodでロガーを初期化し、AfterMethodでreport.flush()を使用する必要があると思います。それはあなたの問題を解決するかもしれません。

+0

BeforeMethodでロガーを初期化し、AfterMethodでレポートをフラッシュしました。ありがとうございました。ありがとうございました。 –

+0

@optimist_creeperここでも同じ問題がありますか? https://stackoverflow.com/questions/47227788/extent-reports-logs-gets-merged-when-running-test-cases-in-parallel – paul

+0

@Ag_Yogeあなたのコードを共有してください。どうだった?どのようにあなたの問題を解決した。 – paul

関連する問題