Grupos em TestNG
โก Resumo Inteligente
Grupos em TestNG Permite marcar mรฉtodos de teste com rรณtulos lรณgicos e, em seguida, incluรญ-los ou excluรญ-los por meio de um conjunto de testes XML. Essa abordagem simplifica a execuรงรฃo de testes de fumaรงa, regressรฃo e orientados a dependรชncias sem a necessidade de reescrevรช-los. Java cรณdigo.

TestNG รฉ uma estrutura de testes que abrange testes de unidade, funcionais, de ponta a ponta, de interface do usuรกrio e de integraรงรฃo para Java projetos.
Vocรช pode executar um รบnico pacote ou vรกrios pacotes (um pacote encapsula classes relacionadas em um layout de diretรณrio definido) criando um conjunto de arquivos XML e acionando-o por meio do Maven.
TestNG Grupos com exemplo
Vocรช usa grupos em TestNG quando:
- Vocรช nรฃo quer espalhar mรฉtodos de teste por vรกrias classes simplesmente por รกrea funcional, e
- Vocรช deseja ignorar (nรฃo executar) casos de teste selecionados como se eles nรฃo existissem no cรณdigo-fonte.
- Para atingir ambos os objetivos, vocรช categoriza os mรฉtodos em grupos lรณgicos. TestNG Em seguida, respeita os filtros "include" e "exclude" declarados no conjunto XML.
O trecho de cรณdigo abaixo mostra a sintaxe de marcaรงรฃo de grupo usada em um mรฉtodo de teste.
Aqui sรฃo usados โโdois nomes de grupo, a saber: bonding e strong_tiesEssas sรฃo etiquetas lรณgicas que vocรช pode renomear para se adequarem ao seu projeto.
O <groups> A tag marca o inรญcio dos filtros de grupo dentro do conjunto XML.
Em seguida, vocรช personaliza o XML para selecionar um grupo especรญfico dentre as classes marcadas. O exemplo abaixo mostra a sintaxe da declaraรงรฃo de grupo.
<corrida>
<incluir nome=โlaรงosโ />
</corrida>
</grupos>
Considere que uma รบnica classe contรฉm 10 mรฉtodos de teste.
Dentre esses mรฉtodos:
- 6 mรฉtodos carregam o
bondinggrupo, e - 4 mรฉtodos carregam o
strong_tiesgrupo.
Em seguida, vocรช configura o Maven e Java caminhos e use o Eclipse IDE para demonstrar o uso em grupo por meio de arquivos XML dentro de um Java-projeto baseado em Maven.
Criar XML para TestNG com etiquetas
- O arquivo XML (Extensible Markup Language) no framework Maven armazena a configuraรงรฃo para um ou mais testes, declarados dentro do tag.
- Cada entrada de teste รฉ envolvida em um etiqueta e pode conter um ou mais TestNG classes.
- A Java aula com um ou mais @Teste As anotaรงรตes sobre seus mรฉtodos sรฃo tratadas como uma TestNG classe.
Vรกrias tags aparecem em sequรชncia para construir um arquivo testng.xml funcional, a saber: , , e .
- O A tag contรฉm o nome do nรญvel da suรญte usado em TestNG relatรณrios para resumos de execuรงรฃo.
- O <test name=โGuru 99 Teste de Fumaรงaโ> A tag contรฉm um nome de teste lรณgico; o relatรณrio a utiliza para contabilizar aprovaรงรตes, reprovaรงรตes e testes ignorados, alรฉm do tempo total de execuรงรฃo e metadados do grupo.
- O A tag aponta para a classe de teste, onde
com.group.guru99รฉ o pacote eTC_Class1รฉ o nome da classe.
<!DOCTYPE suรญte SISTEMA โhttp://testng.org/testng-1.0.dtdโ>
<suรญte nome="Suรญte">
<teste nome="Guru 99 Teste de Fumaรงa - Demonstraรงรฃo">
<grupos>
<corrida>
<incluir nome=โlaรงos fortesโ />
</corrida>
</grupos>
<aulas>
<classe nome=โcom.group.guru99.TC_Class1โ />
</aulas>
</teste>
</suรญte>
Esta configuraรงรฃo XML รฉ referenciada nos tutoriais em vรญdeo das prรณximas seรงรตes.
โexcluirโ ou โincluirโ no XML de teste
Se o mecanismo de agrupamento parecer complexo demais para um filtro pequeno, o conjunto de ferramentas testng.xml tambรฉm permite excluir ou incluir mรฉtodos de teste individuais por nome.
Incluir etiquetaSintaxe para a tag de inclusรฃoincluir nome=โ${TEST_CASE_NAME}โ />
Observaรงรฃo: Vocรช pode incluir ou excluir vรกrios casos de teste em uma รบnica execuรงรฃo, e a mesma sintaxe se aplica aos filtros de grupo.
Utilizando dependsOnGroups para Execuรงรฃo Ordenada
Alรฉm da simples inclusรฃo, TestNG permite que um grupo dependa de outro usando o dependsOnGroups atributo. O executor garante que todos os mรฉtodos no grupo pai terminem antes que qualquer mรฉtodo dependente seja iniciado, o que mantรฉm as prรฉ-condiรงรตes confiรกveis.
- Primeiro faรงa login e depois realize as transaรงรตes: Mรฉtodos de login com tags
group = "auth"e testes de transferรชncia de etiquetas comdependsOnGroups = {"auth"}Os testes de transferรชncia sรฃo executados somente apรณs o login ser bem-sucedido. - Ignorar em caso de falha: Se um mรฉtodo no grupo pai falhar, TestNG Marca os mรฉtodos dependentes como ignorados em vez de os falhar completamente, o que mantรฉm os relatรณrios honestos.
- Combine com alwaysRun: Os mรฉtodos de limpeza devem ser configurados.
alwaysRun = trueAssim, o processo de desmontagem continua sendo executado mesmo quando um grupo upstream falha.
Esse padrรฃo รฉ comum em suรญtes de testes ponta a ponta, onde a configuraรงรฃo da API precisa ser concluรญda antes que as verificaรงรตes da interface do usuรกrio sejam iniciadas.
Execute TestNG Agrupar, incluir, excluir cรณdigo (demonstraรงรฃo em vรญdeo)
A seguir, um passo a passo do Java cรณdigo e o conjunto XML que impulsionam o agrupar, excluir e incluir comportamento.
Cenรกrio de teste: Lanรงar o GuruSite de demonstraรงรฃo bancรกria 99: verifique alguns elementos na pรกgina de login, insira as credenciais e verifique novamente alguns itens no painel apรณs o login.
Observaรงรฃo: Cada etapa reside em seu prรณprio mรฉtodo, mas em tempo de execuรงรฃo a ordem depende das entradas no conjunto XML.
- Mรฉtodo 1: Inicialize o navegador e inicie o URL (
tc01LaunchURL()). - Mรฉtodo 2: Verifique o cabeรงalho da pรกgina de login (
tc02VerifyLaunchPage()). - Mรฉtodo 3: Insira 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 os links adicionais no painel do usuรกrio (
tc05VerifyHyperlinks()).
Code para o cenรกrio:
importar java.util.concurrent.TimeUnit;
importar org.openqa.selenium.By;
importar org.openqa.selenium.WebDriver;
importar org.openqa.selenium.firefox.FirefoxMotoristas;
importar org.testng.Assert;
importar org.testng.annotations.Test;
aula pรบblica TC_Classe1 {
final estรกtica pรบblica webdriver webDriver = new FirefoxDirigir();
Tanga cabeรงalhoDaPรกginaDeLanรงamento = โ//h3[text()='Guru99 Bank']โ;
final Tanga elemento_nome_de_usuรกrio = โ//input[@name='uid']โ, elemento_senha = โ//input[@name='password']โ,
elemento_de_entrada = โ//input[@name='btnLogin']โ;
final Tanga valor_userName = โmngr28642โ, valor_da_senha = โydAnateโ;
final Tanga ID do gerente = โ//td[contains(text(),'ID do Gerente')]โ;
final Tanga novoCliente = โ//a[@href='addcustomerpage.php']โ, transferรชnciaDeFundos = โ//a[@href='FundTransInput.php']โ;
/** Este caso de teste inicializa o webDriver */
@Teste(grupos = { โlaรงosโ, โlaรงos fortesโ })
vazio pรบblico tc01LanรงamentoURL() {
webDriver.manage().window().maximize();
webDriver.manage().timeouts().implicitlyWait(20, TimeUnit.SEGUNDOS);
webDriver.get(โhttps://www.demo.guru99.com/V4/โ);
}
/** Verifica a presenรงa do cabeรงalho na pรกgina de login */
@Teste(grupos = { โlaรงosโ })
vazio pรบblico tc02VerifyLaunchPage() {
Assert.assertTrue(webDriver.findElement(By.xpath(launchPageHeading)).isDisplayed(),
O cabeรงalho da pรกgina inicial nรฃo estรก sendo exibido.);
System.out.println(โO cabeรงalho da pรกgina inicial estรก sendo exibidoโ);
}
/** Insere o nome de usuรกrio, a senha e clica em Entrar */
@Teste(grupos = { โlaรงosโ, โlaรงos fortesโ })
vazio pรบblico 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();
}
/** Verifica o ID do gerente no painel de controle */
@Teste(grupos = { โlaรงos fortesโ })
vazio pรบblico tc04VerifyLoggedInPage() {
Assert.assertTrue(webDriver.findElement(By.xpath(managerID)).isDisplayed(),
โA etiqueta de identificaรงรฃo do gerente nรฃo estรก sendo exibidaโ);
System.out.println(โA etiqueta de identificaรงรฃo do gerente estรก sendo exibidaโ);
}
/** Verifica o link de novo cliente e o link de transferรชncia de fundos no painel de controle */
@Teste(grupos = { โlaรงosโ })
vazio pรบblico tc05VerificarHiperlinks() {
Assert.assertTrue(webDriver.findElement(By.xpath(newCustomer)).isEnabled(),
O link para "Novo cliente" nรฃo estรก sendo exibido.);
System.out.println(โExibido o hiperlink para novo clienteโ);
Assert.assertTrue(webDriver.findElement(By.xpath(fundTransfer)).isEnabled(),
O link para transferรชncia de fundos nรฃo estรก sendo exibido.);
System.out.println(โO link para transferรชncia de fundos รฉ exibidoโ);
}
}
Atenรงรฃo: as credenciais bancรกrias de demonstraรงรฃo permanecem vรกlidas por aproximadamente 20 dias, portanto, uma execuรงรฃo local pode exibir um erro de credenciais invรกlidas apรณs esse perรญodo expirar.
Explicaรงรฃo do cรณdigo:
Cinco mรฉtodos de teste, um por aรงรฃo, cada um com um groups atributo no @Test anotaรงรฃo.
Os dois rรณtulos de grupo lรณgico sรฃo strong_ties e bonding.
- O primeiro e o terceiro mรฉtodos carregam ambos
bondingestrong_tiesPortanto, elas sรฃo executadas sempre que qualquer um dos grupos estiver incluรญdo no conjunto de testes. Esse รฉ um padrรฃo comum para sistemas compartilhados. caso de teste passos. - O segundo mรฉtodo estรก marcado apenas com
bonding, entรฃo ele sรณ funciona quando obondingO grupo estรก incluรญdo. - O quarto mรฉtodo estรก marcado apenas com
strong_tiesPortanto, ele sรณ รฉ executado quando esse grupo estรก incluรญdo. - O quinto mรฉtodo estรก marcado apenas com
bonding, entรฃo ele sรณ funciona quando obondingO grupo estรก incluรญdo.
Seguem-se quatro cenรกrios de execuรงรฃo:
Cenรกrio 1: Execute todos os mรฉtodos de teste, independentemente do grupo. Remova o <groups> bloco do XML em execuรงรฃo.
Cenรกrio 2: Execute apenas os mรฉtodos associados a um grupo escolhido, a saber: strong_ties or bondingPor favor, veja o vรญdeo abaixo.
- Na primeira parte do vรญdeo, o
<groups>O bloco estรก comentado, entรฃo todos os mรฉtodos de teste sรฃo executados. - Na segunda parte, o filtro de grupo รฉ restaurado e apenas os mรฉtodos correspondentes sรฃo executados.
Cenรกrio 3: Aplique o filtro de exclusรฃo para ignorar casos de teste selecionados. Consulte o vรญdeo.
- A demonstraรงรฃo exclui
tc02pelo nome no XML em execuรงรฃo, e o relatรณrio de resultados confirma que o mรฉtodo excluรญdo nรฃo รฉ executado.
Cenรกrio 4: Aplique o filtro de inclusรฃo para executar somente tc01LaunchURL, tc03EnterCredentials e tc05VerifyHyperlinksPor favor, consulte o vรญdeo.
Nessa execuรงรฃo, somente os mรฉtodos listados no filtro de inclusรฃo sรฃo executados, exatamente como configurado.
Faรงa o download do projeto de exemplo no link abaixo.
Faรงa o download do arquivo acima. Code
Conclusรฃo
Grupos em TestNG dar estrutura a grandes Selenium e conjuntos de unidades, substituindo divisรตes de classe pontuais por filtros XML declarativos.
Identifique seus mรฉtodos com @Test(groups = {...}), entรฃo use <include>, <exclude> e dependsOnGroups para gerar testes de fumaรงa, regressรฃo e ponta a ponta a partir do mesmo projeto Maven em TestNG 7.x.

