Grupos de teste – incluir e excluir (exemplo)
TestNG é uma estrutura de teste que cobre diferentes tipos de designs de teste, como testes unitários, funcionais, ponta a ponta, UI e testes de integração.
Você pode executar pacotes únicos ou múltiplos (pacote aqui significa encapsular um grupo de classes em um formato de diretor adequado) criando XML e executando-o através do maven.
TestNG Grupos com exemplo
Usamos grupos em Teste quando,
- Não queremos definir métodos de teste separadamente em classes diferentes (dependendo da funcionalidade) e
- Ao mesmo tempo, deseja ignorar (não executar) alguns casos de teste como se eles não existissem no código.
- Então para fazer isso temos que agrupá-los. Isso é feito usando os mecanismos “incluir” e “excluir” suportados no testNG.
No exemplo abaixo, mostramos a sintaxe de como usar grupos no arquivo XML.
@Test (groups = { "bonding", "strong_ties" })
Aqui estamos usando 2 nomes de grupos, ou seja, “bonding” e “strong_ties” (estes são os nomes lógicos que podem ser alterados conforme seu desejo).
<groups>
tag define o início dos grupos em XML.
Personalize seu XML para escolher o grupo mencionado nas classes de teste. Abaixo mencionada está a sintaxe de como declarar grupos em um arquivo XML, por exemplo
<groups> <run> <include name="bonding" /> </run> </groups>
Então, vamos supor que existam 10 métodos de teste em uma classe.
Fora deles,
- 6 métodos são marcados no grupo “ligação” e
- 4 estão no grupo “strong_ties”
Seguindo em frente, vamos definir maven/Java caminho e use o Eclipse IDE para demonstrar o uso de grupos usando arquivos XML em Java projeto maven baseado.
Criar XML para TestNG com etiquetas
- O arquivo XML (Extensible Markup Language) na estrutura Maven contém as informações de um ou mais testes e é definido pelo marcação.
- As informações de teste em XML são representadas por marcação e pode conter um ou mais TestNG classes.
- A Java classe que contém @Teste anotação acima dos métodos de teste é definida como TestNG métodos.
Várias tags são usadas em uma sequência para construir um xml testNG funcional como , e
- Primeiro é tag, que contém um nome lógico que define informações completas para testNG relatadas para gerar relatório de execução.
- O segundo é , observe que é o nome lógico que contém as informações do relatório de execução de teste, como aprovação, reprovação, pular casos de teste e outras informações, como tempo total de execução e informações do grupo
- Terceiro écom.group.guru99.TC_Class1”/>, com.group.guru99 é o pacote usado e o nome da classe de teste é TC_Class1.
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd"> <suite name="Suite"> <test name="Guru 99 Smoke Test Demo"> <groups> <run> <include name="strong_ties" /> </run> </groups> <classes> <class name="com.group.guru99.TC_Class1" /> </classes> </test> </suite>
Estaremos usando este XML para o próximo vídeo fornecido nas seções abaixo.
“excluir” ou “incluir” no XML de teste
Suponha que você esteja achando o uso do mecanismo de grupo complexo, então o testNG XML facilita a funcionalidade para excluir/incluir um teste.
Exclude Tag: Syntax for exclude tag <exclude name="${TEST_CASE_NAME}" /> Include Tag: Syntax for include tag <include name="${TEST_CASE_NAME}" />
Nota: Podemos incluir/excluir vários casos de teste uma vez por vez, o que também funciona com Grupos.
Execute TestNG Agrupar, incluir, excluir código (demonstração em vídeo)
Explicação do Java Código e XML com o agrupar, excluir e incluir a tag em XML.
Cenário de Teste: Inicie o site de demonstração do Guru99 Banking, verifique algumas coisas na página de login depois disso, insira as credenciais e verifique novamente algumas coisas novas no aplicativo quando estiver conectado.
Nota: Cada etapa que você codifica deve ser declarada em métodos separados, mas quando executada, ela executará métodos de teste dependendo das entradas no arquivo XML.
- Método 1: Inicialize o navegador e inicie o URL (tc01LaunchURL())
- Método 2: Verifique o título da página de login (tc02VerifyLaunchPage())
- Método 3: Digite o nome de usuário e a senha no formulário de login (tc03EnterCredentials())
- Método 4: Verifique a presença do ID do gerente no painel do usuário (tc04VerifyLoggedInPage())
- Método 5: Verifique mais alguns links no User DashBoard (tc05VerifyHyperlinks())
Código para nosso cenário:
package com.group.guru99; import java.util.concurrent.TimeUnit; 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 TC_Class1 { public static final WebDriver webDriver = new FirefoxDriver();; String launchPageHeading = "//h3[text()='Guru99 Bank']"; final String userName_element = "//input[@name='uid']", password_element = "//input[@name='password']", signIn_element = "//input[@name='btnLogin']"; final String userName_value = "mngr28642", password_value = "ydAnate"; final String managerID = "//td[contains(text(),'Manger Id')]"; final String newCustomer = "//a[@href='addcustomerpage.php']", fundTransfer = "//a[@href='FundTransInput.php']"; /** * This test case will initialize the webDriver */ @Test(groups = { "bonding", "strong_ties" }) public void tc01LaunchURL() { webDriver.manage().window().maximize(); webDriver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS); webDriver.get("http://www.demo.guru99.com/V4/"); } /** * Will check the presence of Heading on Login Page */ @Test(groups = { "bonding" }) public void tc02VerifyLaunchPage() { Assert.assertTrue(webDriver.findElement(By.xpath(launchPageHeading)).isDisplayed(), "Home Page heading is not displayed"); System.out.println("Home Page heading is displayed"); } /** * This test case will enter User name, password and will then click on * signIn button */ @Test(groups = { "bonding", "strong_ties" }) public void tc03EnterCredentials() { webDriver.findElement(By.xpath(userName_element)).sendKeys(userName_value); webDriver.findElement(By.xpath(password_element)).sendKeys(password_value); webDriver.findElement(By.xpath(signIn_element)).click(); } /** * This test case will verify manger's ID presence on DashBoard */ @Test(groups = { "strong_ties" }) public void tc04VerifyLoggedInPage() { Assert.assertTrue(webDriver.findElement(By.xpath(managerID)).isDisplayed(), "Manager ID label is not displayed"); System.out.println("Manger Id label is displayed"); } /** * This test case will check the presence of presence of New customer link * And FundTransfer link in Left pannel */ @Test(groups = { "bonding" }) public void tc05VerifyHyperlinks() { Assert.assertTrue(webDriver.findElement(By.xpath(newCustomer)).isEnabled(), "New customer hyperlink is not displayed"); System.out.println("New customer hyperlink is displayed"); Assert.assertTrue(webDriver.findElement(By.xpath(fundTransfer)).isEnabled(), "Fund Transfer hyperlink is not displayed"); System.out.println("Fund Transfer hyperlink is displayed"); } }
Observação: as credenciais são válidas apenas por 20 dias, portanto, se você tentar executar o código em sua máquina local, poderá enfrentar um erro de credenciais inválidas.
Explicação do Código:
Conforme mencionado acima, criamos 5 casos de teste para realizar cada ação em métodos independentes.
Para cada método, associamos um parâmetro de grupo a algum valor.
Basicamente, estes são os nomes dos grupos diferenciadores, ou seja, “strong_ties” e “bonding”.
- O primeiro e o terceiro métodos são marcados como “bonding”, “strong_ties”, o que significa que se o XML for atualizado em qualquer grupo, isso Caso de teste correrá.
- O segundo método é marcado apenas como grupo “ligação”, significa que se o XML for atualizado com o grupo de ligação. Somente nesse caso este caso de teste será executado.
- O quarto caso de teste é marcado para o grupo strong_ties, o que significa que este caso de teste só será executado se o XML for atualizado com o nome do grupo strong_ties.
- Por último, mas não menos importante, o quinto caso de teste é anexado ao grupo de ligação, o que significa que este caso de teste só será executado se o XML for atualizado com o nome do grupo de ligação.
Portanto, no geral, temos 4 cenários;
Cenário 1: Queremos executar todos os casos de teste, independentemente do nome do grupo. Nesse caso, removeremos a tag Group da execução do XML.
Cenário 2: Queremos executar alguns testes relacionados apenas a qualquer um dos grupos, ou seja, strong_ties ou bonding. Consulte:
- Neste vídeo, o parâmetro Group é comentado na execução do XML. Portanto, você verá que todos os casos de teste foram executados.
- Na continuação do vídeo, agora que incluímos o nome do grupo em XML, você pode ver apenas os casos de teste específicos daquele grupo que está em execução.
Cenário 3: Estamos usando o mecanismo Excluir para excluir o caso de teste. Consulte o vídeo
- Você vê que usamos excluir alguns casos de teste (tc02) escrevendo seus nomes em XML em execução. No resultado final, os casos de teste mencionados não foram executados.
Cenário 4: Por último, estamos usando o mecanismo de teste de inclusão para incluir os casos de teste (tc01LaunchURL, tc03EnterCredentials e tc05VerifyHyperlinks). Consulte o vídeo
Neste vídeo, você verá que os casos de teste mencionados em XML só são executados durante a execução do teste.
Faça o download do código do código do exemplo acima-
Conclusão
Aprendemos aqui uma maneira relativamente nova de executar casos de teste usando XML no projeto Maven.
Começamos fornecendo uma breve introdução ao testNG e continuamos com a especificação técnica completa dos Grupos, excluem e incluem.