Cómo continuar la ejecución cuando falla la aserción
-
28-10-2019 - |
Pregunta
Estoy usando Selenium RC usando Java con eclipse y el marco TestNG.Tengo el siguiente fragmento de código:
assertTrue(selenium.isTextPresent("Please enter Email ID"));
assertTrue(selenium.isTextPresent("Please enter Password"));
La primera afirmación fracasó y se detuvo la ejecución.Pero quiero continuar con el siguiente fragmento de código.
Solución
Selenium IDE utiliza verificar para realizar una aserción suave, lo que significa que la prueba continuará incluso si la verificación falla e informará las fallas al final de la prueba o en caso de una aserción dura.
Con TestNG es posible tener estas afirmaciones suaves mediante el uso de oyentes de prueba personalizados.He documentado cómo hacer esto en mi blog: http://davehunt.co.uk/2009/10/08/using-soft-assertions-in-testng.html
Básicamente, necesitas crear el tuyo propio. verify*
métodos, en estos puede detectar fallas de aserción y agregarlas a un mapa.Luego en una costumbre afterInvocation
oyente, puede configurar la prueba como fallida si el mapa no está vacío.
Otros consejos
Le sugiero que use afirmaciones suaves, que se proporcionan en TestNg de forma nativa
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();
}
Fuente: http://rameshbaskar.wordpress.com/2013/09/11 / aserciones-suaves-usando-testng /
Cambie sus afirmaciones por verificaciones:
verifyTrue(selenium.isTextPresent("Please enter Email ID"));
verifyTrue(selenium.isTextPresent("Please enter Password"));
Estoy agregando de nuevo una de las formas más fáciles de continuar con el error de afirmación.Esto se preguntó aquí .
try{
Assert.assertEquals(true, false);
}catch(AssertionError e)
{
System.out.println("Assertion error. ");
}
System.out.println("Test Completed.");
Una vez que falla una aserción, la ejecución debería detenerse, ese es el punto de usarlas.
Puede declarar una afirmación que prueba ambas cosas, pero luego prueba dos cosas a la vez.Es mejor corregir la causa del primer error y luego pasar a la segunda afirmación.