Come continuare l'esecuzione quando l'asserzione non è riuscita
-
28-10-2019 - |
Domanda
Sto usando Selenium RC usando Java con eclipse e il framework TestNG.Ho il seguente frammento di codice:
assertTrue(selenium.isTextPresent("Please enter Email ID"));
assertTrue(selenium.isTextPresent("Please enter Password"));
La prima asserzione non è riuscita e l'esecuzione è stata interrotta.Ma voglio continuare con l'ulteriore snippet di codice.
Soluzione
Selenium IDE utilizza la verifica per eseguire un'asserzione soft, il che significa che il test continuerà anche se il controllo fallisce e segnalerà gli errori alla fine del test o in caso di asserzione hard.
Con TestNG è possibile avere queste asserzioni morbide utilizzando listener di test personalizzati.Ho documentato come farlo sul mio blog: http://davehunt.co.uk/2009/10/08/using-soft-assertions-in-testng.html
Fondamentalmente, è necessario creare i propri metodi verify*
, in questi è possibile rilevare gli errori di asserzione e aggiungerli a una mappa.Quindi in un listener afterInvocation
personalizzato puoi impostare il test come fallito se la mappa non è vuota.
Altri suggerimenti
Ti suggerisco di utilizzare asserzioni soft, fornite in TestNg in modo nativo
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 /
Modifica le tue asserzioni in verifiche:
verifyTrue(selenium.isTextPresent("Please enter Email ID"));
verifyTrue(selenium.isTextPresent("Please enter Password"));
Aggiungo di nuovo uno dei modi più semplici per continuare in caso di errore di asserzione.Questo è stato chiesto qui .
try{
Assert.assertEquals(true, false);
}catch(AssertionError e)
{
System.out.println("Assertion error. ");
}
System.out.println("Test Completed.");
Una volta che un'asserzione fallisce, l'esecuzione dovrebbe interrompersi, questo è il punto per usarle.
Puoi dichiarare un'asserzione che verifica entrambe le cose, ma poi stai testando due cose contemporaneamente.Meglio correggere la causa del primo errore, quindi passare alla seconda affermazione.