Как продолжить выполнение, когда Assertion failed

Я использую Selenium RC, используя Java с eclipse и Framework TestNG. У меня есть следующий фрагмент кода:

assertTrue(selenium.isTextPresent("Please enter Email ID"));
assertTrue(selenium.isTextPresent("Please enter Password"));

Первое утверждение не выполнено, и исполнение было остановлено. Но я хочу продолжить дальнейший фрагмент кода.

Ответ 1

Selenium IDE использует проверку для выполнения мягкого утверждения, что означает, что тест будет продолжаться, даже если проверка завершится с ошибкой и сообщит о сбоях в конце теста или о событии жесткого утверждения.

С помощью TestNG можно получить эти мягкие утверждения, используя пользовательские тестовые прослушиватели. Я зарегистрировал, как это сделать в своем блоге: http://davehunt.co.uk/2009/10/08/using-soft-assertions-in-testng.html

В принципе, вам нужно создать свои собственные методы verify*, в них вы можете уловить ошибки утверждения и добавить их на карту. Затем в пользовательском afterInvocation прослушивателе вы можете установить тест на сбой, если карта не пуста.

Ответ 2

Я предлагаю вам использовать мягкие утверждения, которые содержатся в TestNg изначально

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

Источник: http://rameshbaskar.wordpress.com/2013/09/11/soft-assertions-using-testng/

Ответ 3

Измените свои утверждения на проверки:

verifyTrue(selenium.isTextPresent("Please enter Email ID"));
verifyTrue(selenium.isTextPresent("Please enter Password"));

Ответ 4

Я снова добавляю один из самых простых способов продолжить сбой утверждения. Это было предложено здесь.

try{
        Assert.assertEquals(true, false);
        }catch(AssertionError e)
        {
            System.out.println("Assertion error. ");
        }

        System.out.println("Test Completed.");

Ответ 5

Как только утверждение не выполняется, выполнение должно прекратиться, чтобы точка их использования.

Вы можете объявить утверждение, которое проверяет обе вещи, но затем вы проверяете сразу две вещи. Лучше исправить причину первого отказа, а затем перейти ко второму утверждению.