TestNG DataProviders – Uma visão geral completa e demonstração

Última atualização: 06 de setembro de 2020 — Continuous Testing Expert

 

Cedric Beust criou o popular framework de automação de testes TestNG em 2003, utilizando a linguagem de programação Java. Ele é similar ao JUnit e ao NUnit, mas resolve algumas de suas deficiências, como controle de configuração deficiente, modelos de programação estáticos, falta de testes de dependência, etc. Foi projetado para abranger uma ampla gama de projetos de teste, incluindo testes funcionais, unitários e de sistemas integrados. O TestNG oferece recursos poderosos que não apenas permitem aos testadores executar tarefas complexas de teste, mas também tornam as funcionalidades fáceis de usar. Embora o TestNG seja mais conhecido por suas anotações, o TestNG DataProviders é outro recurso útil que facilita e torna mais eficiente o teste orientado a dados. Com parametrização de dados, listeners de dados, DataProviders, relatórios HTML, logs, agrupamento e priorização de casos de teste e capacidade de teste paralelo, o TestNG rapidamente se tornou o favorito da maioria dos testadores.

O que são DataProviders do TestNG?

Um dos aspectos importantes do TestNG é o teste orientado a dados. O recurso DataProviders faz parte do teste orientado a dados, fornecendo diferentes valores para um caso de teste em uma única execução. Isso significa que você pode executar um único caso de teste uma vez, mas executar um método com diferentes valores de dados. Por exemplo, você pode testar uma página de cadastro com diferentes entradas, mas executará o teste apenas uma vez. O recurso DataProviders do TestNG passa todos esses valores para o caso de teste um de cada vez, permitindo que ele teste diferentes conjuntos de dados em uma única execução.

A necessidade de provedores de dados TestNG

O TestNG Parameters é um recurso semelhante que fornece valores para funções por meio de um arquivo XML. Usando parâmetros, você pode executar várias funções com um único conjunto de dados ou executar uma única função com vários conjuntos de dados. No entanto, o desafio com parâmetros é que você só pode executar o caso de teste com esse valor uma única vez. Em um projeto de teste padrão, você precisa executar casos de teste com vários valores. Nesse caso, você teria que executar o caso de teste várias vezes com conjuntos de dados diferentes. Os provedores de dados do TestNG resolvem esse desafio, permitindo que você execute o caso de teste apenas uma vez, mas use conjuntos de dados diferentes. Ele fornece valores de dados em formato de matriz para os métodos de teste por meio de anotações.

Como funciona?

O recurso DataProviders do TestNG usa a seguinte sintaxe. Por exemplo:

[java] @DataProvider (name = “ExperitestDataProvider”) public Object[][] ExperitestDPMethod() { return new Object [][] { values} } [/java]

Se você verificar a sintaxe, verá que ela usa anotações do TestNG. Apenas um parâmetro é usado aqui, que é o nome. Este parâmetro aceita apenas um valor de string como nome do provedor de dados. Eles têm um método próprio. Por exemplo: `ExperitestDPMethod()` aqui. Por padrão, o TestNG usa o nome do método como nome do provedor de dados quando não especificado.

Ao executar o caso de teste, o método do provedor de dados é chamado pelo provedor de dados, que retorna uma lista de objetos 2D para realizar testes orientados a dados para cada conjunto de dados.

Instalação

Aqui estão os seguinteswing toOLS necessários para usar o recurso TestNG DataProviders:

  1. Java
  2. Selênio
  3. IDE Eclipse
  4. TesteNG

Passo 1: Instale o Java

Para executar o TestNG, você precisa do Java Development Kit (JDK) 8.0 ou superior. Acesse este link para baixar e instalar o Java em sua máquina.

https://www.oracle.com/in/java/technologies/javase-downloads.html

O Java SE 14.0.2 é a versão mais recente. Portanto, baixe o arquivo executável e clique duas vezes para instalar o software.

Etapa 2: Configurar a variável de ambiente

Após instalar o Java, você deve especificar o caminho do Java no sistema. Para fazer isso: Abra Sistema -> Propriedades Avançadas do Sistema -> Avançado -> Variáveis ​​de Ambiente.

testando provedores de dados

Para 'variáveis ​​de usuário para Usuário', digite:

  • C:Arquivos de ProgramaJavajdk-14.0.2

No campo "Variáveis ​​de Sistema", insira o caminho da pasta bin:

  • C:Arquivos de ProgramaJavajdk-14.0.2bin

Agora, o Java está pronto para uso.

Passo 3: Instale o Eclipse

Para criar e editar scripts Java, você precisa de uma IDE Java. Eclipse e IntelliJ são duas IDEs populares para Java. Para instalar o Eclipse, acesse o seguinte link:

https://www.eclipse.org/downloads/

A versão mais recente é o Eclipse IDE 2020-06. Após o download do software, clique duas vezes nele e instale-o.

provedores de teste do Eclipse

Existem várias versões do Eclipse. Portanto, escolha 'Eclipse para desenvolvedores Java' e prossiga com a instalação.

provedores de dados de teste do Eclipse

Após a conclusão da instalação, abra o IDE. Sempre que você abrir o IDE, ele solicitará que você escolha uma pasta para o espaço de trabalho. Você pode prosseguir com o local padrão ou escolher um novo.

provedores de dados de teste de espaço de trabalho

Ao abrir o Eclipse pela primeira vez, será exibida uma tela de boas-vindas. Agora, a IDE está pronta para uso.

provedores de dados de teste do Eclipse

Passo 4: Instale o Selenium

O Selenium é uma estrutura de automação de testes de código aberto bastante popular nos últimos tempos. Visite este link para baixar o software Selenium:

https://www.selenium.dev/downloads/

Baixe o Selenium Standalone Server, que vem como um arquivo JAR. A versão estável mais recente é a 3.141.59. Você não precisa instalá-lo. Basta salvá-lo em sua máquina.

Passo 5: Instale o TestNG

Nas versões anteriores do Eclipse, o TestNG estava disponível no Eclipse Marketplace, onde bastava clicar em "Instalar" para adicioná-lo ao Eclipse. Na versão mais recente, é necessário baixar o TestNG manualmente e adicioná-lo como um arquivo de biblioteca. Acesse este link para baixar o TestNG:

https://dl.bintray.com/testng-team/testng-eclipse-release/

Clique no link do arquivo compactado, escolha a versão mais recente e salve os arquivos no seu dispositivo.

testando provedores de dados zip

Para adicionar o TestNG ao Eclipse, abra a IDE e clique em "Instalar novo software". Na tela seguinte, clique em "Adicionar" e adicione os arquivos manualmente.

Alternativamente, você pode fornecer o link do TestNG diretamente para que a ferramenta baixe os arquivos automaticamente.

software disponível para testar provedores de dados

Selecione TestNG, clique em Avançar, aceite o contrato de licença e clique em Concluir. Reinicie o Eclipse para finalizar o procedimento de configuração do TestNG.

Para verificar se o TestNG está instalado corretamente, pressione Ctrl+N e veja se o TestNG está listado lá.

assistente testando provedores de dados

Agora, o TestNG está pronto para uso.

Primeiro teste com TestNG DataProviders

Agora que todas as ferramentas estão instaladas, vamos executar o primeiro teste para ver como os DataProviders do TestNG funcionam.

Abra o Eclipse IDE e clique em Novo -> Projeto Java. Dê um nome ao projeto e clique em Avançar.

novo projeto

Na tela seguinte, clique em Biblioteca e depois em 'Adicionar arquivo JAR externo'.

jarro externo

Selecione o arquivo JAR do Selenium Standalone Server e clique em OK. O Selenium será adicionado ao seu projeto.

Agora, clique em 'Adicionar biblioteca' e selecione TestNG na próxima tela para adicionar o TestNG ao seu projeto.

adicionar biblioteca

Selenium e TestNG são adicionados ao seu projeto juntamente com o ambiente de execução Java.

Clique em Novo -> Pacote para criar um novo pacote.

novo pacote

Crie uma nova classe nesse pacote. Exemplo: ExperitestDataProviders.java

Agora, adicione este código à classe. Observe que ele contém DataProviders do TestNG.

[java] package ExperitestDataProviders; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; public class ExperitestTestNGDP { @DataProvider (name = “Experitest-DataProvider”) public Object[][] ExperitestDPMethod(){ return new Object[][] {{“Experitest1”}, {“Experitest2”}, {“Experitest3”}, {“Experitest4”}, {“Experitest5”}}; } @Test (dataProvider = “Experitest-DataProvider”) public void ExperiTest (String val) { System.out.println(“O parâmetro passado é: ” + val); } } [/java]

  • Aqui, definimos um provedor de dados com o nome 'Experitest-DataProvider' e fornecemos 5 valores (Experitest1, Experitest2, etc.).
  • Durante o teste (@Test), contatamos o provedor de dados.
  • Escrevemos um método com um parâmetro de string e armazenamos o valor em 'val'.
  • O caso de teste receberá o valor da string e o imprimirá.

Ao executar este caso de teste uma vez, ele será executado 5 vezes e, a cada execução, um valor de string será impresso. Portanto, utilizando o recurso DataProviders, executamos um único caso de teste várias vezes.

testando provedores de dados

Este é o resultado que mostra que 5 testes foram executados e 5 testes foram aprovados.

variáveis ​​de teste

Demonstração do SeeTest Cloud

Aqui está outra demonstração de teste executada na nuvem SeeTest. Este caso de teste abre um navegador web na nuvem e, em seguida, abre o site do Google nesse navegador. Depois, digita 'Experitest' na caixa de pesquisa e busca na web por essa palavra-chave. Em seguida, abre o site do Google novamente e busca pela palavra-chave 'SeeTest'. Aqui, escrevemos apenas um caso de teste, mas definimos um provedor de dados TestNG chamado 'Experitest-DataProvider', que fornece dois valores para o caso de teste.

[java] @DataProvider (name = “Experitest-DataProvider”) public Object[][] ExperitestDPMethod(){ return new Object[][] {{“Experitest”}, {“SeeTest”}}; } [/java]

Portanto, com o recurso de provedor de dados, você está executando um único caso de teste duas vezes.

Aqui está o código:

[java] package ExperitestDataProviders; import org.openqa.selenium.*; import org.openqa.selenium.remote.BrowserType; import org.openqa.selenium.remote.CapabilityType; import org.openqa.selenium.remote.DesiredCapabilities; import org.openqa.selenium.remote.RemoteWebDriver; import org.openqa.selenium.support.ui.ExpectedConditions; import org.openqa.selenium.support.ui.WebDriverWait; import org.testng.annotations.AfterMethod; import org.testng.annotations.BeforeMethod; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; import java.net.URL; public class DPexample { private String host = “https://cloud.seetest.io”; private static final String ACCESS_KEY = “Digite sua chave de acesso aqui”; private RemoteWebDriver driver; private URL url; private DesiredCapabilities dc = new DesiredCapabilities(); @DataProvider (name = “Experitest-DataProvider”) public Object[][] ExperitestDPMethod(){ return new Object[][] {{“Experitest”}, {“SeeTest”}}; } @BeforeMethod public void setUp() throws Exception { url = new URL(“https://cloud.seetest.io/wd/hub”); dc.setCapability(CapabilityType.BROWSER_NAME, BrowserType.CHROME); dc.setCapability(CapabilityType.PLATFORM, Platform.ANY); dc.setCapability(“accessKey”, ACCESS_KEY); dc.setCapability(“testName”, “Demonstração Rápida do Navegador Chrome”); driver = new RemoteWebDriver(url, dc); } @Test (dataProvider = “Experitest-DataProvider”) public void ExperiTest (String val) { driver.get(“https://www.google.com”); new WebDriverWait(driver, 10).until(ExpectedConditions.presenceOfElementLocated(By.name(“q”))); WebElement searchBar = driver.findElement(By.name(“q”)); searchBar.click(); searchBar.sendKeys(val); searchBar.sendKeys(Keys.ENTER); } @AfterMethod public void tearDown() { System.out.println(“URL do relatório: “+ driver.getCapabilities().getCapability(“reportUrl”)); driver.quit(); } } [/java]

Aqui está o resultado:

resultados

O SeeTest é uma ferramenta abrangente de automação de testes para web e dispositivos móveis. que permite executar e gerenciar seus testes facilmente a partir de um painel intuitivo. Também oferece uma poderosa ferramenta de geração de relatórios que facilita a análise dos seus testes.

Segue o relatório do teste de demonstração:

relatório de teste

Seguem os detalhes do teste:

começo rápido

Resumo

O DataProviders é um recurso prático para testadores que permite escrever um único caso de teste e executá-lo várias vezes com valores de conjunto de dados predefinidos. Ele também permite executar vários métodos usando um único conjunto de dados. O TestNG DataProviders simplifica e facilita os testes orientados a dados. A plataforma SeeTest permite que você aproveite ao máximo o recurso TestNG DataProviders para executar facilmente casos de teste com diferentes conjuntos de dados, além de gerar relatórios personalizados.

Guy Arieli - CTO

Também recomendamos