Selenium 报告显示为通过,尽管我故意在Before方法中失败

Selenium 报告显示为通过,尽管我故意在Before方法中失败,selenium,testng,Selenium,Testng,在我下面的代码报告中,尽管我在BeforeMethod中测试用例失败,但始终将testcase显示为Pass。请帮我解决这个问题 public class practice extends Test_CommonLib { WebDriver driver; ExtentReports logger; String Browser="FireFox"; @BeforeMethod public void setUp() throws Exception{

在我下面的代码报告中,尽管我在BeforeMethod中测试用例失败,但始终将testcase显示为Pass。请帮我解决这个问题

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

}

嗯,你所观察到的是正确的。当断言失败时,其余的代码不会执行。你的情况也是如此。不管您的断言是否通过/失败,驱动程序不再执行该方法中的任何代码&直接从@BeforeMethod注释中出来,并移动到@Test注释下的方法

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

@AnandKakhandaki在这里,您需要遵循本页后面的TestNG的某些指导原则- 值得一提的是,
BeforeMethod
注释中的代码段将在每次执行任何方法之前执行。同样,对于
BeforeSuite
BeforeClass
BeforeTest
BeforeGroups
。类似地,
AfterMethod
注释中的代码段将在每次执行任何方法后执行。同样,对于
AfterSuite
AfterClass
AfterTest
aftergroup
。这些注释中的代码应该用于在实际测试执行开始/结束之前和之后配置被测试的应用程序系统。这些注释可能包括用于选择用于测试执行的浏览器、使用某些属性打开/关闭浏览器、打开url、切换到其他url、关闭url等的代码,这些都是运行测试执行的必需配置

验证/验证或断言不应成为这些注释的一部分。相反,断言应该在
Test
注释中。准确地说,断言也应该在一个单独的库中保存在
Test
注释之外。因此,带有in
Test
注释的代码只包含测试步骤


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

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


我在beforemethod中有一些特定的代码,所以我希望,如果beforemethod失败,那么它应该跳过Testmethod,直接转到我有报告代码的AfterMethod。-目前,这是预期的工作。但为什么我的报告将结果显示为Pass as Testcase失败是因为@BeforeMethod???的断言失败?简单的英语
@BeforeMethod
&
@AfterMethod
不是您的实际测试;只有
@Test
是您的testsWell我在before方法中有一些特定的代码,所以我希望,如果before方法失败,那么它应该跳过Testmethod,直接转到AfterMethod,在那里我有报告代码。-目前,这是预期的工作。但为什么我的报告将结果显示为Pass as Testcase失败,因为@BeforeMethod???的断言失败?@AnandKakhandaki检查我的更新答案&如果有任何疑问,请告诉我。