Как продолжить выполнение при сбое утверждения - PullRequest
13 голосов
/ 23 марта 2011

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

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

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

Ответы [ 5 ]

20 голосов
/ 24 марта 2014

Я предлагаю вам использовать мягкие утверждения, которые изначально представлены в 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/

9 голосов
/ 23 марта 2011

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

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

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

5 голосов
/ 23 марта 2011

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

verifyTrue(selenium.isTextPresent("Please enter Email ID"));
verifyTrue(selenium.isTextPresent("Please enter Password"));
3 голосов
/ 24 марта 2015

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

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

        System.out.println("Test Completed.");
1 голос
/ 23 марта 2011

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

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

...