SoftAssert在调用SoftAssertobj.assertAll()函数后失败所有测试方法

问题描述:

我正在自动化一个网站,并且我正在使用软断言来失败我的测试用例。但是现在我得到了在特定情况下失败的测试方法之后出现的所有测试方法的失败报告。下面给出的示例代码SoftAssert在调用SoftAssertobj.assertAll()函数后失败所有测试方法

//Function Call 

    commFunction.backnavigation(driver, props,"Item",ExcelResult_Field, className,"CustomerPricing"); 

//Function Declaration 

    public void backnavigation(WebDriver driver, Properties props, 
      String MenuName, boolean TestStatus, String className, 
      String MethodName) throws InterruptedException, 
      EncryptedDocumentException, InvalidFormatException, IOException { 



     Boolean bool_backButton = ValidationHelper.isElementPresent(driver, 
       By.xpath(LocatorModule(props, "BackNavigationButton"))); 

     if (bool_backButton.equals(true)) { 
      ExecutionHelper.ElementTobeClicked_Xpath(driver, 
        By.xpath(LocatorModule(props, "BackNavigationButton"))); 

      ListClassView = ExecutionHelper 
        .waitForElementVisible(
          driver, 
          By.xpath("//ul[@id='settings_menu']//li/a[text()='" 
            + MenuName 
            + "']/ancestor::li/following-sibling::li[1]/ul/li")); 

      if (ListClassView.equals(true)) { 
       writeResulttoExcel(TestStatus, className, 
         MethodName); 
        if(TestStatus!=true) 
        { 
         // softAssert.assertEquals(false, true,"TEST STATUS Fail--assert fail"); 
         softAssert.fail("TEST STATUS Fail--assert fail"); 
        } 
      } 

      else { 
       Thread.sleep(3000); 
       driver.findElement(
         By.xpath(".//*[@id='settings_menu']/li[@class='left width_fluid']/a[text()='" 
           + MenuName + "']")).click(); 
       writeResulttoExcel(false, className, MethodName); 
       //softAssert.assertEquals(false, true,"ListClassView FALSE--assert fail"); 
        softAssert.fail("ListClassView FALSE--assert fail"); 
       Thread.sleep(2000); 
      } 

      Thread.sleep(3000); 
     } 

     else { 
      driver.navigate().back(); 
      Boolean ListClassView = ExecutionHelper 
        .waitForElementVisible(
          driver, 
          By.xpath("//ul[@id='settings_menu']//li/a[text()='" 
            + MenuName 
            + "']/ancestor::li/following-sibling::li[1]/ul/li")); 
      if (ListClassView.equals(true)) 
      { 
       writeResulttoExcel(false, className, MethodName); 
       // softAssert.assertEquals(false, true,"BACK BUTTON FALSE LIST VIEW AVAILABLE--assert fail"); 

        softAssert.fail("BACK BUTTON FALSE LIST VIEW AVAILABLE--assert fail"); 

      } 

      else { 
       Thread.sleep(3000); 
       driver.findElement(
         By.xpath(".//*[@id='settings_menu']/li[@class='left width_fluid']/a[text()='" 
           + MenuName + "']")).click(); 
       writeResulttoExcel(false, className, MethodName); 
      // softAssert.assertEquals(false, true,"BACK BUTTON FALSE LIST VIEW NOT AVAILABLE--assert fail"); 
       softAssert.fail("BACK BUTTON FALSE LIST VIEW NOT AVAILABLE--assert fail"); 

      } 

      Thread.sleep(3000); 
     } 
     softAssert.assertAll(); 
    } 

以下方法1应以我的实际场景中失败,方法2应该通过。但是在调用softAssert.assertAll()之后;方法1 & 2失败。为该场景附加TestNG报告。测试在客户定价失败后,报告显示所有测试方法都失败了。应该应用哪种更改来解决此问题。

TestNG Report Image File

+0

粘贴你的实际代码。如果你正在调用相同的函数,那么两者都会失败。也asserttrue只需要一个参数.. –

+0

@niharika_neo更新了实际的代码。请看看那个 – Baburaj

哪里是在提供的代码你@Test方法?你在@Test中调用你预定义的backnavigation方法吗?你在哪里创建了softAssert对象?下面的简单例子会帮助你。

public class SoftAsert 
{ 
@Test 
public void test() 
{ 
    SoftAssert asert=new SoftAssert(); 
    asert.assertEquals(false, true,"failed"); 
    asert.assertEquals(0, 1,"brokedown"); 
    asert.assertAll(); 
} 
} 

请发起@Test它的自我和@Test结尾使用assertAll,使其将只提供特定的试验失败的详细信息,SoftAssert对象。

谢谢, Murali