2017-05-17 3 views
1

두 가지 테스트 방법이 있으며 링크의 제목을 확인하는 코드를 작성했습니다. 한 가지 방법으로 의도적으로 한 가지 방법을 통과했지만 다른 하나는 실패했지만 보고서에는 실패했습니다 파이 차트에서만 패스 상태를 제공합니다. 실패한 것을 추적하는 방법?셀렌의 범위 보고서를 사용하여 합격과 불합격을 구별하는 방법

package com.custom.reports; 

import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.firefox.FirefoxDriver; 
import org.testng.Assert; 
import org.testng.ITestResult; 
import org.testng.annotations.AfterMethod; 
import org.testng.annotations.AfterSuite; 
import org.testng.annotations.Test; 

import com.relevantcodes.extentreports.ExtentReports; 
import com.relevantcodes.extentreports.LogStatus; 

public class CustomReports { 
    WebDriver driver; 
    ExtentReports logger; 

    @Test(priority = 1) 
    public void verifyTitle() { 

     System.setProperty("webdriver.firefox.marionette", "C:\\geckodriver.exe"); 
     logger = ExtentReports.get(CustomReports.class); 
     logger.init("C:\\Users\\siddhesh.kalgaonkar\\Documents\\Reports\\SecondReport.html", true); 
     logger.startTest("Verify Title Test"); 
     driver = new FirefoxDriver(); 
     driver.manage().window().maximize(); 
     logger.log(LogStatus.INFO, "Browser is up and running.."); 
     driver.get("http://google.com"); 
     logger.log(LogStatus.INFO, "Application is up and running.."); 
     String title = driver.getTitle(); 
     Assert.assertTrue(title.contains("Google")); 
     logger.log(LogStatus.INFO, "Title is verified.."); 
     logger.endTest(); 

    } 

    @Test(priority = 2) 
    public void verifyTitle2() { 
     String title1 = driver.getTitle(); 
     Assert.assertTrue(title1.contains("Selenium")); 
     logger.log(LogStatus.INFO, "Title is verified.."); 
     logger.endTest(); 
    } 

    @AfterSuite 
    public void afterFailed() { 
     driver.get("C:\\Users\\siddhesh.kalgaonkar\\Documents\\Reports\\SecondReport.html"); 
    } 
} 

아래 보고서의 스크린 샷이 생성됩니다 :
enter image description here
는 추가 정보가 필요한 경우 알려 주시기 바랍니다
다음은 내 코드입니다.
미리 감사드립니다 :)

+0

당신의 질문이 셀렉니언과 관련된 더 많은 Testng이라고 말했을 것입니다. 우리는 Junit과 협력하여 대답 대신에 주석을 사용합니다. 우리가 가진 프로젝트 중 하나에서'@ Rule'을 추가하고'@Override protected void succeeded (Description description) {}'과'@Override protected void failed (Throwable e, Description description) {}'를 수행했습니다. –

+1

오케이 @EnriqueMedina. 당신은 내가 TestNG에서 그것을 어떻게 얻을 수 있는지 알 수 있니? –

+0

아무도 도와주세요 –

답변

0

각 방법을 수행 한 후에 결과를 확인하십시오.

+0

이 코드를 편집하는 방법에 대한 명확성을 좀 더 줄 수 있습니까? 심각하게 도움이 될 것이고 코드에 보고서 변수가 없습니다. 어디서 찾았 니? –

+0

나는 오래 전에 나의 코드를 썼다. BeforeTest에서 보고서를 만듭니다. \t report = new ExtentReports ("PATH"); 테스트에서 시작합니다. \t logger = report.startTest ("Test"); 그래서 AfterMethod (각 테스트 후)에서는 Test의 테스트에서 ITestResult를 가져옵니다. result.getStatus()는 ITestResult.RESULTTYPE의 형식이어야합니다 –

+0

로거는 ExtentReports의 객체입니다. 코드를 수정하여 자세히 작성하면 도움이 될 수 있습니다. –

0

각 @Test에 대한 테스트를 시작하고 종료해야한다고 생각합니다 (범위에서 별도 테스트로 로깅). 내가 볼 수있는 코드에서 테스트 로깅은 verifyTitle() (첫 번째 테스트 메소드)에서만 시작되고 끝났으며 정보에는 세 개의 로그가 있습니다.

따라서 보고서에는 세 가지 정보 (세 가지 정보 로그가 첫 번째 테스트 방법에 있음)와 함께 통과 한 테스트 사례 (첫 번째 테스트 방법) 만 표시됩니다.

모든 테스트 방법에 대한 시작/종료 테스트를 추가하고 확인하십시오.

다음은 수정 된 코드입니다.

public class Stack 
{ 
    WebDriver driver = null; 
    ExtentReports logger = ExtentReports.get(CustomReports.class); //Initinating the logger 
    logger.init("C:\\Users\\siddhesh.kalgaonkar\\Documents\\Reports\\SecondReport.html", true); 
    System.setProperty("webdriver.firefox.marionette", "C:\\geckodriver.exe"); 
    driver = new FirefoxDriver(); 
    driver.manage().window().maximize(); 

@Test(priority = 1) 
public void verifyTitle() 
{ 

    logger.startTest("Verify Title Test");//Starting the test logger 
    logger.log(LogStatus.INFO, "Browser is up and running.."); 
    driver.get("http://google.com"); 
    logger.log(LogStatus.INFO, "Application is up and running.."); 
    String title = driver.getTitle(); 
    Assert.assertTrue(title.contains("Google")); //This will pass 
    logger.log(LogStatus.INFO, "Title is verified.."); 
    logger.endTest();//Ending the test logger 

} 

@Test(priority = 2) 
public void verifyTitle2() 
{ 

    logger.startTest("Verify Failing the test case");//Starting the test logger 
    String title1 = driver.getTitle(); 
    Assert.assertTrue(title1.contains("Selenium")); //This will fail 
    logger.log(LogStatus.INFO, "Title is verified.."); 
    logger.endTest();//Ending the test logger 
} 

@AfterSuite 
public void afterFailed() 
{ 
    driver.get("C:\\Users\\siddhesh.kalgaonkar\\Documents\\Reports\\SecondReport.html"); 
} 
} 

희망이 도움이 될 것입니다. 감사.

+0

그래도 그 중 하나를 편집했지만 여전히 동일합니다. . 내 코드를 업데이트했습니다. 한 번 보겠습니다. –

+0

각 @Test에 대해 확장 테스트 로거를 시작하고 종료해야합니다. method1에서 테스트를 시작하고 방법 2에서 끝내면 method1과 method2를 모두 단일 테스트로 간주합니다. 또한 After Suite에서 테스트 케이스가 실패하는 것을 볼 수 있습니다.하지만 After suite에서 시작된 테스트 로거가 없습니다. 현재의 경우, 당신이 4 개의 정보를 파이 차트에 가지고 있다고 믿습니다. –

+0

감사합니다. @santhosh. 이번에는 내 코드를 수정 했으므로 콘솔에서 결과를 전달하고 실패했습니다.하지만 실패한 보고서에는 표시되지 않습니다. 하나. –