[Dúvida] Melhor maneira de como trabalhar com data driven com Selenium WebDriver

Boa tarde, tudo bem pessoal?

Recentemente comecei a me envolver mais com automação, e, por conta própria, busquei estudar as melhores práticas para desenvolvimento do mesmo.

Na empresa na qual trabalho foi definido um padrão de automação (Resultado destes estudos) utilizando Page Objects, encapsulamento, orientação objetos, etc. Atualmente estou estudando data drive e fiquei com uma grande dúvida hehe. Para explicar minha dúvida, vou mostrar um pouco como esta o script de teste.

package components.workspace;

import static org.junit.Assert.assertTrue;

import java.io.IOException;

import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;

import auxiliary.GenUrl;
import components.BaseTest;

/**
 * 
 * @author victor.santos
 *
 */
public class LoginTest extends BaseTest {

	@Test(dataProvider = "loginUserData")
	public void loginWithCorrectUserAndPassword(String username, String password)
			throws InterruptedException, IOException {
		LoginHelper login = new LoginHelper(this.driver)
				.pageAcess(GenUrl.setPageHome())
				.authenticateUser(username, password)
				.login();
		assertTrue(login.isCorrectLogin());
	}

	/**
	 * Responsável por armazenar as informações de <b>usuário</b> e <b>senha</b>
	 * para utilização no login.
	 * 
	 * @return o conjunto de dados com os usuários e senhas utilizados para o
	 *         login.
	 */
	@DataProvider(name = "loginUserData")
	public Object[][] loginData() {
		Object[][] usersLogin = new Object[3][2];

		usersLogin[0][0] = "joao";
		usersLogin[0][1] = "1234";

		usersLogin[1][0] = "pedro";
		usersLogin[1][1] = "1234";

		usersLogin[2][0] = "andre";
		usersLogin[2][1] = "1234";

		return usersLogin;
	}
}

Minha dúvida seria se é possível eu passar um objeto com as informações para o teste, e no teste buscar essas informações. Para um cenários simples deste não existe realmente necessidade disto, mas pensando num cenário de preenchimento de formulário por exemplo, onde existente 15, 20, … informações a serem utilizados.

Desde já, grato pela atenção

Eu gosto de usar planilhas do excel para entrada de parametros onde você consegue gerenciar uma grande quantidade de dados em um unico lugar.

@bruwesley Olá, tudo bem? Então, estou estudando aqui com planilhas agora, mas a questão de parâmetros se mantém, no caso, o @Test fica com os parâmetros no método igual. Você teria um exemplo de como melhorar isto?

Um formulário com 15 itens que realmente fazem diferença no output final é bem dificil de acontecer.

O que você pode fazer é fazer uso de geradores de conteudo fake (https://github.com/DiUS/java-faker) e para os dados criticos do seu datadriven, parametros em arquivo de configuração YML.

EU já trabalhei com jxl + selenium + testng… era muito verboso e as vezes se eu ficasse uns dias sem olhar para as planilhas e o código. eu nao entendia mais nada.

Eu concordo com o @Leonardo-Galani e uso no meu dia a dia dados fakes. Ler a partir de uma planilha acho que é meio old school e mais complexo.

No C# eu to usando assim.

using namespace LinqToExcel;
using linq;

public List<Servidor> retornaListaServidoresXLS(string caminhoXls)
{
var book = new ExcelQueryFactory(caminhoXls);
var servidores = from x in book.Worksheet<Servidor>(“ListaServidores”)
select x;

var listaServidores = new List<Servidor>();

foreach (Servidor oServidor in servidores)
    if (oServidor.IPServidor != null)
    {
        listaServidores.Add(oServidor);
    }


return listaServidores;

}

@Rafa cada caso é um caso, em cenários que você precise manipular a massa e essa massa de alguma forma tem que ser controlada ainda prefiro o Excel por ser fácil de manipular.

@Leonardo-Galani @bruwesley @Rafa Obrigado pelas respostas, ajudaram bastante a dar um norte aqui!.

Log in to reply

Looks like your connection to Agile Testers was lost, please wait while we try to reconnect.