Parametrização de Dados para Automação de Teste – Parte 3

Série de posts

Este post faz parte de uma série chamada Parametrização de Dados de Teste!
Clique neste link para acessar a série de posts, ou acesse pelo menu Série de Posts.

Introdução

Quando usamos a linguagem Java para desenvolver scripts de teste temos a possibilidade de escolher o framework de teste. Atualmente são dois os mais usados: JUnit e TestNG.
Já vimos a utilização do Data Driven com o JUnit neste post, agora veremos com o TestNG.

Data Driven com TestNG

O que é o TestNG?

O TestNG é um framework de testes inspirado no JUnit. Ele foi criado para ser uma alternativa ao JUnit onde o seu diferencial é ter funcionalidades que a comunidade necessita, mas que não estão presentes no JUnit.

http://testng.org/doc/index.html

Como usar DataDriven com TestNG

1. Entendimento dos dados que serão usados

A nossa aplicação utiliza três campos:

  • Nome
  • Cidade
  • Faixa de Idade

Logo estes três serão os dados de entrada e precisarão estar mapeados.

O resultado final depende da escolha da Faixa de Idade. Dependendo do valor selecionado o resultado é diferente.
Logo existe um dado de saída que chamaremos de resultado.

É extremamente importante, no início do seu aprendizado, listar quais são os dados de entrada e quais são os dados de saída que você precisará utilizar no script de teste.

 

2. Entendimento dos atributos que serão usados

Teremos estes três dados de entrada, logo eles serão os atributos que usaremos mais a frente. Mas já iremos definí-los para que seja mais fácil o entendimento:

Entrada Variável
Nome String nome
Cidade String cidade
Faixa de idade String faixaIdade

3. Criação do Data Driven

O TestNG possui uma anotação chamada @DataProvider (Provedor de Dados, em tradução livre) que marca um método como sendo o provedor de dados para o script. Este método deve sempre retornar um array de objetos (Object[][]).

Para facilitar a criação do DataDriven, siga estes passos:

  1. Criação de um método público com o nome que você quiser (prefira dar um nome que identifique facilmente o data driven). Linha 2.
  2. Retornar um array de objetos. Linha 3
  3. Adicionar os dados que serão utilizados no script de teste. Linhas 4 a 7
  4. Adicionar a anotação @DataProvider colocando como parâmetro o atributo name e como valor um identificador  para ele. Linha 1

4. Associação dos dados

Para o método de teste, informamos um parâmetro para o @Test como sendo dataProvider e como valor o nome do identificador que criamos no @DataProvider (massaDeDados).

Depois, basta colocar como parâmetro os atributos relacionados a massa de dados (método do data driven) vide “2. Entendimento dos atributos que serão usados”.
O foco principal aqui é que a associação dos dados está sendo feita em duas partes:

  1. Primeiro, na linha 1, com a atribuição do dataProvider como “massaDeDados”. Este foi o nome criado para o método que contém a massa de dados no nosso código (explicado acima)
  2. Segundo, na linha 2, a adição dos parâmetros de entrada do teste que são os dados já mapeados anteriormente mais o resultado

Diferenças entre DataDriven com JUnit e TestNG

JUnit TestNG
Necessita de um aviso ao JUnit que o script é Data Driven (@RunWith(Parameterized.class) Não é necessário informar que o script é Data Driven
Necessário criar um construtor para associação dos dados Associação dos dados é feita através dos parâmetros do método de teste e informação do nome do dataProvider
Necessário anotar o método com os dados através do @Parameters Necessário anotar o método com os dados através do @DataProvider

Código completo

Visualize o projeto no GitHub: https://github.com/eliasnogueira/parametrizacao-script-teste

Pontos de atenção no script

  • O @Test é proveniente do TestNG (org.testng.annotations)
  • Ao invés de @Before (do JUnit) usamos o @BeforeMethod (exclusivo do TestNG) para executar a pré-condição para cada execução do data driven
  • Ao invés do @After (do JUnit) usamos o @AfterMethod (exclusivo do TestNG) para executar a pós-condição para cada execução do data driven
  • O assertEquals do TestNG é invertido, ou seja, o primeiro parâmetro é o resultado obtido e o segundo é o resultado esperado.

 

 

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *