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.

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top