Question

J'utilise Selenium RC à l'aide de Java avec Eclipse et TestNg Framework. J'ai l'extrait de code suivant:

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

La première affirmation a échoué et l'exécution a été arrêtée. Mais je veux continuer l'extrait de code supplémentaire.

Était-ce utile?

La solution

Selenium IDE utilise Vérifier pour effectuer une affirmation douce, ce qui signifie que le test se poursuivra même si le chèque échoue et signale les échecs à la fin du test ou sur l'événement d'une affirmation dure.

Avec TestNG, il est possible d'avoir ces affirmations douces en utilisant des auditeurs de test personnalisés. J'ai documenté comment faire cela sur mon blog: http://davehunt.co.uk/2009/10/08/using-soft-assertions-in-testng.html

Fondamentalement, vous devez créer le vôtre verify* Méthodes, dans celles-ci, vous pouvez assister à des échecs d'assertion et les ajouter à une carte. Puis dans une coutume afterInvocation Écouteur Vous pouvez définir le test sur l'échec si la carte n'est pas vide.

Autres conseils

Je vous suggère d'utiliser des affirmations douces, qui sont fournies en testNg nativement

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();
}

La source: http://rameshbaskar.wordpress.com/2013/09/11/soft-assertions-using-testng/

Changez vos affirmations en vérifications:

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

J'ajoute à nouveau l'un des moyens les plus simples de continuer à défaillance de l'affirmation. Cela a été demandé ici.

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

        System.out.println("Test Completed.");

Une fois qu'une affirmation échoue, l'exécution doit s'arrêter, c'est le point de les utiliser.

Vous pouvez déclarer une affirmation qui teste les deux choses, mais vous testez ensuite deux choses à la fois. Mieux vaut réparer la cause du premier échec, puis passer à la deuxième affirmation.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top