TestNG é uma estrutura de teste, que cobre diferentes tipos de designs de teste, como teste de unidade, teste funcional, teste ponta a ponta, teste de IU e teste de integração.
Você pode executar um único ou vários casos de teste em seu código Testng.
Se a prioridade do teste não for definida enquanto, executando vários casos de teste, TestNG atribui a todos os @Test uma prioridade como zero (0).
Agora, enquanto corre; prioridades mais baixas serão programadas primeiro.
Neste tutorial, você aprenderá -
- Demonstração do código TestNG sem prioridade
- Demonstração do código TestNG sem prioridade em ordem alfabética
- Como definir a prioridade no TestNG
- Métodos com a mesma prioridade
- Combinar métodos priorizados (tendo a mesma prioridade) e métodos não priorizados
Demonstração do código TestNG sem prioridade
Vejamos um cenário em que o sequenciamento será necessário para passar em todos os casos de teste:
Cenário: Gere um código em que você é obrigado a realizar uma pesquisa no Google com uma palavra-chave específica, como "Facebook". Agora, verifique se o título do navegador foi alterado para "Facebook - Pesquisa Google".
Nota: Cada etapa que você codifica deve estar em métodos separados
Método 1 : abra o navegador, diga Firefox (openBrowser ())
Método 2 : Inicie o Google.com (launchGoogle ())
Método 3 : realizar uma pesquisa usando "Facebook" (performSearchAndClick1stLink ())
Método 4 : verifique o título da página de pesquisa do Google (FaceBookPageTitleVerification ())
Código para nosso cenário :
import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.firefox.FirefoxDriver;import org.testng.Assert;import org.testng.annotations.Test;public class Priority_In_testNG {Driver WebDriver;// Método 1: Open Brower, digamos Firefox@Testepublic void openBrowser () {driver = novo FirefoxDriver ();}// Método 2: Inicie o Google.com@Testepublic void launchGoogle () {driver.get ("http://www.google.co.in");}// Método 3: Faça uma pesquisa usando "Facebook"@Testepublic void peformSeachAndClick1stLink () {driver.findElement (By.xpath (".//*[@ title = 'Pesquisar']")). sendKeys ("Facebook");}// Método 4: verifique o título da página de pesquisa do Google.@Testepublic void FaceBookPageTitleVerification () lança Exception {driver.findElement (By.xpath (".//*[@ value = 'Search']")). click ();Thread.sleep (3000);Assert.assertEquals (driver.getTitle (). Contains ("Facebook - Google Search"), true);}}
Explicação do Código
Conforme mencionado acima, criamos 4 casos de teste para realizar cada ação em métodos independentes.
- O primeiro método (openBrowser) afirma para inicializar o navegador Firefox.
- O segundo método (launchGoogle) afirma que o início do Google.com está no navegador inicializado.
- O terceiro método (peformSeachAndClick1stLink) afirma que realiza uma pesquisa na caixa de pesquisa (com xpath (".//*[@title='Search ']") com um termo de pesquisa como Facebook e
- O quarto e último método (FaceBookPageTitleVerification) afirma que clicar no ícone de pesquisa do Google e verificar se o título do navegador foi alterado para Facebook - Pesquisa Google.
Agora execute este código usando testNG, conforme mostrado no vídeo, você verá que todos os casos de teste estão falhando. O motivo da falha: como há uma dependência do caso de teste anterior para passar, apenas o caso de teste em execução atual será aprovado.
Nesse caso,
- O primeiro método executado é openBrowser (). Foi aprovado porque não possui nenhuma dependência.
- O segundo método executado é FaceBookPageTitleVerification (); está falhando porque estamos tentando clicar no botão de pesquisa e verificar o título do navegador.
- Você pode ver que, se a atividade de pesquisa não for processada, como qualquer outra etapa pode ser aprovada. Portanto, esse é o motivo pelo qual meus casos de teste estão falhando.
PASSADO: openBrowserFALHA: FaceBookPageTitleVerificationFALHOU: launchGoogleFALHA: peformSeachAndClick1stLink
Demonstração do código TestNG sem prioridade em ordem alfabética
Se não mencionarmos nenhuma prioridade, o testng executará os métodos @Test com base na ordem alfabética dos nomes dos métodos, independentemente do local de implementação no código.
package com.guru.testngannotations;import org.testng.annotations.Test;public class TestNG_Priority_Annotations {@Testepublic void c_method () {System.out.println ("Estou no método C");}@Testepublic void b_method () {System.out.println ("Estou no método B");}@Testepublic void a_method () {System.out.println ("Estou no método A");}@Testepublic void e_method () {System.out.println ("Estou no método E");}@Testepublic void d_method () {System.out.println ("Estou no método D");}}
Resultado
Estou no método AEstou no método BEstou no método CEstou no método DEstou no método E
Embora tenhamos definido os métodos de maneira aleatória (c, b, a, e, d), o testng executou os métodos com base em seus nomes de método considerando a ordem alfabética e o mesmo foi refletido na saída também.
Como definir a prioridade no TestNG
Como você viu no exemplo anterior, o sequenciamento é necessário para passar neste cenário, portanto, modificaremos a parte anterior do código com o parâmetro de prioridade para que cada teste seja executado em relação à prioridade atribuída a eles.
Agora, como você pode ver, atribuímos a Prioridade a cada caso de teste, o que significa que o caso de teste com o valor de prioridade mais baixo será executado primeiro.
Prioridade no testNG em ação
import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.firefox.FirefoxDriver;import org.testng.Assert;import org.testng.annotations.Test;public class Priority_In_testNG {Driver WebDriver;// Método 1: Abra o navegador, diga Firefox@Test (prioridade = 1)public void openBrowser () {driver = novo FirefoxDriver ();}// Método 2: Inicie o Google.com@Test (prioridade = 2)public void launchGoogle () {driver.get ("http://www.google.co.in");}// Método 3: Faça uma pesquisa usando "Facebook"@Test (prioridade = 3)public void peformSeachAndClick1stLink () {driver.findElement (By.xpath (".//*[@ title = 'Pesquisar']")). sendKeys ("Facebook");}// Método 4: verifique o título da página de pesquisa do Google.@Test (prioridade = 4)public void FaceBookPageTitleVerification () lança Exception {driver.findElement (By.xpath (".//*[@ value = 'Search']")). click ();Thread.sleep (3000);Assert.assertEquals (driver.getTitle (). Contains ("Facebook - Google Search"), true);}}
Explicação do Código
Depois de atribuir prioridade a cada caso de teste, execute o código acima usando testNG conforme mostrado no Vídeo 2 mencionado abaixo.
Aqui, você pode ver que os casos de teste são priorizados. Os casos de teste com prioridade mais baixa são executados primeiro, ou seja, agora há uma execução sequencial de acordo com a prioridade nos casos de teste. Portanto, todos os casos de teste estão passando agora.
Observe o console do eclipse:
Produto :
PASSADO: openBrowserPASSADO: launchGooglePASSADO: peformSearchAndClick1stLinkPASSADO: FaceBookPageTitleVerification
O número 0 tem a prioridade mais alta (será executado primeiro) e a prioridade continua com base no número fornecido, ou seja, 0 tem a prioridade mais alta do que 1. 1 tem a prioridade mais alta do que 2 e assim por diante.
package com.guru.testngannotations;import org.testng.annotations.Test;public class TestNG_Priority_Annotations {@Test (prioridade = 6)public void c_method () {System.out.println ("Estou no método C");}@Test (prioridade = 9)public void b_method () {System.out.println ("Estou no método B");}@Test (prioridade = 1)public void a_method () {System.out.println ("Estou no método A");}@Test (prioridade = 0)public void e_method () {System.out.println ("Estou no método E");}@Test (prioridade = 3)public void d_method () {System.out.println ("Estou no método D");}}
Resultado
Estou no método EEstou no método AEstou no método DEstou no método CEstou no método B
Aqui fornecemos as prioridades como 0,1,3,6,9. Portanto, o método com 0 como prioridade é executado primeiro e, em seguida, o método com prioridade-1 e assim por diante. Aqui, o nome do método de ordem alfabética não será considerado, pois fornecemos as prioridades
Métodos com a mesma prioridade:
Pode haver uma chance de que os métodos contenham a mesma prioridade. Nesses casos, o testng considera a ordem alfabética dos nomes dos métodos cuja prioridade é a mesma.
package com.guru.testngannotations;import org.testng.annotations.Test;public class TestNG_Priority_Annotations {@Test (prioridade = 6)public void c_method () {System.out.println ("Estou no método C");}@Test (prioridade = 9)public void b_method () {System.out.println ("Estou no método B");}@Test (prioridade = 6)public void a_method () {System.out.println ("Estou no método A");}@Test (prioridade = 0)public void e_method () {System.out.println ("Estou no método E");}@Test (prioridade = 3)public void d_method () {System.out.println ("Estou no método D");}}
Resultado
Estou no método EEstou no método DEstou no método AEstou no método CEstou no método B
Aqui, 'e' e 'd' são executados com base em seus valores de prioridade. Mas os métodos 'a' e 'c' contêm o mesmo valor de prioridade (6). Portanto, aqui testng considera a ordem alfabética de 'a' e 'c' e os executa de acordo.
Combinando métodos priorizados (com a mesma prioridade) e não priorizados:
Nesse caso, cobriremos dois casos em uma classe de teste.
- Métodos com o mesmo valor de prioridade.
- Mais de um método não priorizado.
package com.guru.testngannotations;import org.testng.annotations.Test;public class TestNG_Priority_Annotations {@Teste()public void c_method () {System.out.println ("Estou no método C");}@Teste()public void b_method () {System.out.println ("Estou no método B");}@Test (prioridade = 6)public void a_method () {System.out.println ("Estou no método A");}@Test (prioridade = 0)public void e_method () {System.out.println ("Estou no método E");}@Test (prioridade = 6)public void d_method () {System.out.println ("Estou no método D");}}
Resultado:
Estou no método BEstou no método CEstou no método EEstou no método AEstou no método D
PASSADO: b_methodPASSADO: c_methodPASSADO: e_methodPASSADO: a_methodPASSADO: d_method
Explicação:
Primeira preferência: Métodos não priorizados: 'c' e 'b': Com base na ordem alfabética 'b' foi executado primeiro e depois 'c'.
Segunda preferência: Métodos priorizados: 'a', 'e' e 'd': 'e' foi executado primeiro porque tinha a prioridade mais alta (0). Como a prioridade dos métodos 'a' e 'd' eram as mesmas, o testng considerou a ordem alfabética dos nomes dos métodos. Então, entre eles, 'a' foi executado primeiro e depois 'd'.
Sensível a maiúsculas e minúsculas no TestNG
Apenas para sua informação, há uma sintaxe padrão para definir a prioridade em testNG, ou seja, @Test (prioridade = 4) , suponha que você esteja definindo em alguma outra sintaxe, diga @Test (PRIORITY = 1), então seu IDE irá mostrá-lo como um erro de compilação . Consulte a imagem abaixo:
Conclusão:
Como você viu, se houver um requisito para executar um conjunto de casos de teste em uma sequência específica, isso pode ser feito facilmente usando o Priority usando testNG como uma ferramenta de execução.
Este tutorial é possível devido às contribuições de Ramandeep Singh e Rama Krishna Gadde