Como continuar a execução quando a declaração falha
-
28-10-2019 - |
Pergunta
Estou usando Selenium RC usando Java com eclipse e estrutura TestNG.Eu tenho o seguinte snippet de código:
assertTrue(selenium.isTextPresent("Please enter Email ID"));
assertTrue(selenium.isTextPresent("Please enter Password"));
A primeira declaração falhou e a execução foi interrompida.Mas quero continuar o trecho de código adicional.
Solução
Selenium IDE usa verificar para realizar uma asserção branda, o que significa que o teste continuará mesmo se a verificação falhar e relatar as falhas no final do teste ou no caso de uma asserção bruta.
Com TestNG, é possível ter essas asserções suaves usando ouvintes de teste personalizados.Eu documentei como fazer isso em meu blog: http://davehunt.co.uk/2009/10/08/using-soft-assertions-in-testng.html
Basicamente, você precisa criar seus próprios métodos verify*
, nestes você pode capturar falhas de asserção e adicioná-las a um mapa.Então, em um ouvinte afterInvocation
personalizado, você pode definir o teste para falhar se o mapa não estiver vazio.
Outras dicas
Eu sugiro que você use asserções suaves, que são fornecidas no TestNg nativamente
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();
}
Fonte: http://rameshbaskar.wordpress.com/2013/09/11 / soft-assertions-using-testng /
Mude suas afirmações para verificações:
verifyTrue(selenium.isTextPresent("Please enter Email ID"));
verifyTrue(selenium.isTextPresent("Please enter Password"));
Estou adicionando novamente uma das maneiras mais fáceis de continuar na falha de declaração.Isso foi solicitado aqui .
try{
Assert.assertEquals(true, false);
}catch(AssertionError e)
{
System.out.println("Assertion error. ");
}
System.out.println("Test Completed.");
Quando uma declaração falha, a execução deve ser interrompida, esse é o objetivo de usá-los.
Você pode declarar uma asserção que testa as duas coisas, mas está testando duas coisas ao mesmo tempo.Melhor corrigir a causa da primeira falha e, em seguida, passar para a segunda afirmação.