Selênio - TestNG
TestNG é uma estrutura de teste poderosa, uma versão aprimorada de JUnit que estava em uso por muito tempo antes de TestNG existir. NG significa 'Next Generation'.
A estrutura TestNG fornece os seguintes recursos -
- As anotações nos ajudam a organizar os testes facilmente.
- Configuração de teste flexível.
- Os casos de teste podem ser agrupados mais facilmente.
- A paralelização de testes pode ser alcançada usando TestNG.
- Suporte para testes baseados em dados.
- Relatórios embutidos.
Instalando TestNG para Eclipse
Step 1 - Inicie o Eclipse e selecione 'Instalar Novo Software'.
Step 2 - Insira o URL como 'http://beust.com/eclipse' e clique em 'Adicionar'.
Step 3- A caixa de diálogo 'Adicionar Repositório' é aberta. Digite o nome como 'TestNG' e clique em 'OK'
Step 4 - Clique em 'Selecionar tudo' e 'TestNG' será selecionado conforme mostrado na figura.
Step 5 - Clique em 'Avançar' para continuar.
Step 6 - Revise os itens selecionados e clique em 'Avançar'.
Step 7 - "Aceite o Contrato de Licença" e clique em 'Concluir'.
Step 8 - TestNG começa a instalar e o progresso seria mostrado a seguir.
Step 9- Um aviso de segurança é exibido porque a validade do software não pode ser estabelecida. Clique OK'.
Step 10- O Instalador solicita que reinicie o Eclipse para que as alterações tenham efeito. Clique em 'Sim'.
Anotações em TestNG
As anotações foram formalmente adicionadas à linguagem Java no JDK 5 e TestNG fez a escolha de usar anotações para anotar as classes de teste. A seguir estão alguns dos benefícios do uso de anotações. Mais sobre TestNG pode ser encontradohere
TestNG identifica os métodos nos quais está interessado, consultando as anotações. Conseqüentemente, os nomes dos métodos não estão restritos a nenhum padrão ou formato.
Podemos passar parâmetros adicionais para anotações.
As anotações são fortemente tipadas, então o compilador irá sinalizar quaisquer erros imediatamente.
As classes de teste não precisam mais estender nada (como TestCase, para JUnit 3).
Sr. Não. | Anotação e descrição |
---|---|
1 | @BeforeSuite O método anotado será executado apenas uma vez antes de todos os testes deste conjunto serem executados. |
2 | @AfterSuite O método anotado será executado apenas uma vez após a execução de todos os testes neste conjunto. |
3 | @BeforeClass O método anotado será executado apenas uma vez antes que o primeiro método de teste na classe atual seja chamado. |
4 | @AfterClass O método anotado será executado apenas uma vez depois que todos os métodos de teste na classe atual forem executados. |
5 | @BeforeTest O método anotado será executado antes que qualquer método de teste pertencente às classes dentro da tag <test> seja executado. |
6 | @AfterTest O método anotado será executado depois que todos os métodos de teste pertencentes às classes dentro da tag <test> forem executados. |
7 | @BeforeGroups A lista de grupos que este método de configuração executará antes. A execução desse método é garantida logo antes que o primeiro método de teste pertencente a qualquer um desses grupos seja chamado. |
8 | @AfterGroups A lista de grupos após os quais este método de configuração será executado. É garantido que este método seja executado logo após o último método de teste pertencente a qualquer um desses grupos ser chamado. |
9 | @BeforeMethod O método anotado será executado antes de cada método de teste. |
10 | @AfterMethod O método anotado será executado após cada método de teste. |
11 | @DataProvider Marca um método como fornecedor de dados para um método de teste. O método anotado deve retornar um Object [] [] onde cada Object [] pode ser atribuído à lista de parâmetros do método de teste. O método @Test que deseja receber dados deste DataProvider precisa usar um nome dataProvider igual ao nome desta anotação. |
12 | @Factory Marca um método como uma fábrica que retorna objetos que serão usados pelo TestNG como classes de teste. O método deve retornar Object []. |
13 | @Listeners Define ouvintes em uma classe de teste. |
14 | @Parameters Descreve como passar parâmetros para um método @Test. |
15 | @Test Marca uma classe ou método como parte do teste. |
Configuração do TestNG-Eclipse
Step 1 - Inicie o Eclipse e crie um 'Novo Projeto Java' conforme mostrado abaixo.
Step 2 - Insira o nome do projeto e clique em 'Avançar'.
Step 3 - Navegue até a guia "Bibliotecas" e adicione o arquivo JAR do servidor de controle remoto Selenium clicando em "Adicionar JARs externos" conforme mostrado abaixo.
Step 4- O arquivo JAR adicionado é mostrado aqui. Clique em 'Adicionar biblioteca'.
Step 5- A caixa de diálogo 'Adicionar biblioteca' é aberta. Selecione 'TestNG' e clique em 'Avançar' na caixa de diálogo 'Adicionar biblioteca'.
Step 6 - A biblioteca 'TestNG' adicionada é adicionada e exibida conforme mostrado abaixo.
Step 7 - Ao criar o projeto, a estrutura do projeto seria conforme mostrado abaixo.
Step 8 - Clique com o botão direito na pasta 'src' e selecione Novo >> Outro.
Step 9 - Selecione 'TestNG' e clique em 'Avançar'.
Step 10 - Selecione o nome da 'Pasta de origem' e clique em 'Ok'.
Step 11 - Selecione o 'Nome do pacote', o 'nome da classe' e clique em 'Concluir'.
Step 12 - O Package explorer e a classe criada seriam exibidos.
Primeiro teste em TestNG
Agora vamos começar a criar scripts usando TestNG. Vamos criar um script para o mesmo exemplo que usamos para entender o WebDriver. Usaremos o aplicativo de demonstração, www.calculator.net , e realizaremos a calculadora de porcentagem.
No teste a seguir, você notará que NÃO existe nenhum método principal, pois o testNG conduzirá o fluxo de execução do programa. Após inicializar o driver, ele executará o método '@BeforeTest' seguido por '@Test' e então '@AfterTest'. Observe que pode haver qualquer número de anotações '@Test' em uma classe, mas '@BeforeTest' e '@AfterTest' podem aparecer apenas uma vez.
package TestNG;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.*;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;
public class TestNGClass {
WebDriver driver = new FirefoxDriver();
@BeforeTest
public void launchapp() {
// Puts an Implicit wait, Will wait for 10 seconds before throwing exception
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
// Launch website
driver.navigate().to("http://www.calculator.net");
driver.manage().window().maximize();
}
@Test
public void calculatepercent() {
// Click on Math Calculators
driver.findElement(By.xpath(".//*[@id='menu']/div[3]/a")).click();
// Click on Percent Calculators
driver.findElement(By.xpath(".//*[@id='menu']/div[4]/div[3]/a")).click();
// Enter value 10 in the first number of the percent Calculator
driver.findElement(By.id("cpar1")).sendKeys("10");
// Enter value 50 in the second number of the percent Calculator
driver.findElement(By.id("cpar2")).sendKeys("50");
// Click Calculate Button
driver.findElement(By.xpath(".//*[@id='content']/table/tbody/tr/td[2]/input")).click();
// Get the Result Text based on its xpath
String result =
driver.findElement(By.xpath(".//*[@id='content']/p[2]/span/font/b")).getText();
// Print a Log In message to the screen
System.out.println(" The Result is " + result);
if(result.equals("5")) {
System.out.println(" The Result is Pass");
} else {
System.out.println(" The Result is Fail");
}
}
@AfterTest
public void terminatetest() {
driver.close();
}
}
Execução
Para executar, clique com o botão direito no XML criado e selecione "Executar como" >> "TestNG Suite"
Análise de Resultado
A saída é enviada para o console e aparecerá conforme mostrado abaixo. A saída do console também possui um resumo de execução.
O resultado do TestNG também pode ser visto em uma guia diferente. Clique no botão 'Visualização de relatório HTML' conforme mostrado abaixo.
O resultado HTML seria exibido conforme mostrado abaixo.