Selenium 报告显示为通过,尽管我故意在Before方法中失败
在我下面的代码报告中,尽管我在BeforeMethod中测试用例失败,但始终将testcase显示为Pass。请帮我解决这个问题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{
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
注释之外。因此,带有inTest
注释的代码只包含测试步骤
如果这回答了您的问题,请告诉我。使用相同的代码,我得到的结果如下所示:-
我在beforemethod中有一些特定的代码,所以我希望,如果beforemethod失败,那么它应该跳过Testmethod,直接转到我有报告代码的AfterMethod。-目前,这是预期的工作。但为什么我的报告将结果显示为Pass as Testcase失败是因为@BeforeMethod???的断言失败?简单的英语
@BeforeMethod
&@AfterMethod
不是您的实际测试;只有@Test
是您的testsWell我在before方法中有一些特定的代码,所以我希望,如果before方法失败,那么它应该跳过Testmethod,直接转到AfterMethod,在那里我有报告代码。-目前,这是预期的工作。但为什么我的报告将结果显示为Pass as Testcase失败,因为@BeforeMethod???的断言失败?@AnandKakhandaki检查我的更新答案&如果有任何疑问,请告诉我。