报告显示为通过虽然我在以前的方法中故意失败了

时间:2017-04-26 15:15:48

标签: selenium testng

在我的下面的代码中 - 报告总是将testcase显示为Pass,虽然我在BeforeMethod上的测试用例失败了。请帮我解决这个问题

public class practice extends Test_CommonLib {
    WebDriver driver;
    ExtentReports logger;
    String Browser="FireFox";

    @BeforeMethod
    public void setUp() throws Exception{
            logger=eno_TestResport(this.getClass().getName(),Browser);
            logger.startTest(this.getClass().getSimpleName());
            Assert.assertTrue(false); //intentionally failing my BeforeMethod

    }

    @Test
    public void CreateObject() throws Exception{
        System.out.println("Test");
    }

    @AfterMethod(alwaysRun=true)
    public void tearDown(ITestResult result) throws Exception{
        if (ITestResult.FAILURE==result.getStatus()) {
            logger.log(LogStatus.FAIL, "Test case failed");
        }else if(ITestResult.SKIP==result.getStatus()){
            logger.log(LogStatus.SKIP, "Test case skipped");
        }else {
            logger.log(LogStatus.PASS, "Aweosme Job");
        }
    }

}

2 个答案:

答案 0 :(得分:0)

嗯,你所观察到的是正确的。当Assertion失败时,其余代码不会被执行。你的情况也是如此。无论你的断言是否通过/失败,驱动程序都不再执行该方法中的任何代码。直接来自@BeforeMethod Annotation并转移到@Test Annotation下的方法。

此外,您的报告将始终将Testcase显示为“Pass”,因为@Test Annotation中的Testcase将成功执行。

@AnandKakhandaki您需要在此页面后遵循TestNG的某些指导原则 - https://www.tutorialspoint.com/testng/testng_basic_annotations.htm 值得一提的是,BeforeMethod Annotation中的代码段将在执行任何方法之前每次执行。同样适用于BeforeSuiteBeforeClassBeforeTest& BeforeGroups。同样,AfterMethod注释中的代码段将在执行任何方法后每次执行。同样适用于AfterSuiteAfterClassAfterTest& AfterGroups。这些提到的注释中的代码应该用于在实际测试执行开始/结束之前和之后配置被测试的应用程序系统。这些注释可能包括用于选择测试执行的浏览器,使用某些属性打开/关闭浏览器,打开URL,切换到其他URL,关闭URL等的代码,这些是执行测试执行的强制配置。

验证/验证或断言绝不应成为这些注释的一部分。相反,断言应该在Test注释范围内。确切地说,断言也应该在Test注释之外,在一个单独的库中。因此,Test注释中的代码仅包含测试步骤。

如果这回答了你的问题,请告诉我。

答案 1 :(得分:0)

使用相同的代码我得到的结果如下: -

enter image description here