How to continue execution when Assertion is failed

前端 未结 5 1433
小鲜肉
小鲜肉 2020-11-28 12:42

I am using Selenium RC using Java with eclipse and TestNG framework. I have the following code snippet:

assertTrue(selenium.isTextPresent(\"Please enter Emai         


        
相关标签:
5条回答
  • 2020-11-28 13:16

    Once an assertion fails, execution should stop, that's the point of using them.

    You can declare an assertion that tests both things, but then you're testing two things at once. Better to fix the cause of the first failure, then move on to the second assertion.

    0 讨论(0)
  • 2020-11-28 13:20

    Selenium IDE uses verify to perform a soft assertion, meaning that the test will continue even if the check fails and either report the failures at the end of the test or on the event of a hard assertion.

    With TestNG it is possible to have these soft assertions by using custom test listeners. I have documented how to do this on my blog: http://davehunt.co.uk/2009/10/08/using-soft-assertions-in-testng.html

    Basically, you need to create your own verify* methods, in these you can catch assertion failures and add them to a map. Then in a custom afterInvocation listener you can set the test to failed if the map is not empty.

    0 讨论(0)
  • 2020-11-28 13:32

    I am adding again one of the easiest ways to continue on assertion failure. This was asked here.

    try{
            Assert.assertEquals(true, false);
            }catch(AssertionError e)
            {
                System.out.println("Assertion error. ");
            }
    
            System.out.println("Test Completed.");
    
    0 讨论(0)
  • 2020-11-28 13:33

    Change your assertions to verifications:

    verifyTrue(selenium.isTextPresent("Please enter Email ID"));
    verifyTrue(selenium.isTextPresent("Please enter Password"));
    
    0 讨论(0)
  • 2020-11-28 13:38

    I suggest you to use soft assertions, which are provided in TestNg natively

    package automation.tests;
    
    import org.testng.asserts.Assertion;
    import org.testng.asserts.SoftAssert;
    
    public class MyTest {
      private Assertion hardAssert = new Assertion();
      private SoftAssert softAssert = new SoftAssert();
    }
    
    @Test
    public void testForSoftAssertionFailure() {
      softAssert.assertTrue(false);
      softAssert.assertEquals(1, 2);
      softAssert.assertAll();
    }
    

    Source: http://rameshbaskar.wordpress.com/2013/09/11/soft-assertions-using-testng/

    0 讨论(0)
提交回复
热议问题