2015-09-21 5 views
2

Я знаю, что этот вопрос является дублирующим. Но я ищу результат вчера. У меня не было никакого решения для этого. Я использую Selenium Webdriver 2.47.1 & TestNG для автоматизации. В моем сценарии автоматизации у меня есть 12 наборов тестов & Я использую метод TestNG Assert для сравнения Ожидаемый результат & Фактический результат. Мой формат кода приведен ниже ...Как продолжить выполнение теста после утверждения?

@Test(priority = 6) 
public void TestingeNote1() { 
    cd.switchTo().frame("RTop"); 
    cd.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS); 
    String TesteNote1 = cd.findElement(By.xpath("//table/tbody/tr[2]/td[5]")).getText(); 
    StringBuffer object1 = new StringBuffer(TesteNote1); 
    String ActeNote1 = object1.substring(108); 
    String ExpeNote1 = ex.getExcelValue(scenarioName, 75, 4); 
    try { 
     Assert.assertEquals(ExpeNote1, ActeNote1); 
     ex.setExcelValue(scenarioName, 75, 8, "PASSED"); 
    } 
    catch(Exception e) { 
     ex.setExcelValue(scenarioName, 75, 8, "FAILED"); 
    } 
    cd.switchTo().defaultContent(); 
} 

Выполнение тестового сценария прекращается после того, как утверждение не получилось. Я хочу продолжить выполнение после того, как утверждение также завершится неудачей. Я также использовал Verify(), он просто дает результат проверки, который был передан. Но приведенный выше результат теста Failed one.

+0

Какая ошибка вы получаете, пока пытаетесь ее утверждать? –

ответ

1

Я бы рекомендовал использовать блок try/finally.

. . .

try { 
    //use IF condition to match Strings (ExpeNote1, ActeNote1)are equal 
    ex.setExcelValue(scenarioName, 75, 8, "PASSED"); 
    } 
    catch(Exception e) 
    { ex.setExcelValue(scenarioName, 75, 8, "FAILED");} 
    finally { cd.switchTo().defaultContent();} 
+1

Я попробовал попытку/наконец-то блокировать также. После того, как проверка завершающего теста останавливается там сама. Это не продолжение казни. – Karthik

+0

Это сработало для меня. Большое спасибо .. catch block не выполняется при использовании вышеуказанного кода. Excel не обновлен с результатом FAILED для конкретного теста – Karthik

+0

Если ваша проблема состоит в том, чтобы соответствовать 2 строкам, то просто используйте условие IF, которое решит вашу проблему. – SDV

1

Использовать блок catch try с надлежащим уловителем исключения. Например, когда вы пытаетесь поймать нормальное исключение, используйте exception в блоке catch, если элемент отсутствует в DOM, тогда используйте NoSuchElementException и т. Д. В вашем случае поймайте исключение, которое вы получаете на своей консоли ошибок. Вот как это делается:

try { 
     Assert.assertEquals(ExpeNote1, ActeNote1); 
     ex.setExcelValue(scenarioName, 75, 8, "PASSED"); 
    } 
    catch(AssertionError e) { 
     ex.setExcelValue(scenarioName, 75, 8, "FAILED"); 
    } 

Ваше исполнение останавливается, потому что вы не поймаете правильное исключение, которое выдает оператор assert. Я предполагаю, что вы получаете AssertionError, если не заменяете тип исключения, который вы получаете из вашего кода выше. Надеюсь это поможет.

+0

При использовании вышеуказанного кода Excel был обновлен с результатом теста как сбой. Но выход Eclipse - 'Пробеги тестов: 12, Неудачи: 0, Пропуски: 0'. Тест не провалился. Просто он показывает тест как прошедший – Karthik

+0

Правильно, он не отображается как неудачный, поскольку вы ловите исключение. Если вы все еще хотите, чтобы он потерпел неудачу, вы можете выбросить новое исключение самостоятельно и не поймать его в блоке catch(), поскольку вам нужен блок catch, который должен быть выполнен. –

Смежные вопросы