Pepino - Tabelas de Dados
Ao trabalhar na automação, podemos enfrentar uma variedade de cenários. Cada cenário carrega um significado e necessidades diferentes.
Desde o início, estamos usando um exemplo de funcionalidade de login para um site de rede social, onde tínhamos apenas dois parâmetros de entrada a serem passados. Vamos pensar em mais alguma possibilidade. Que tal a funcionalidade “Novo registro de usuário”? Normalmente, quais podem ser os parâmetros de entrada ao registrar um novo usuário em um site de rede social? Algo como o seguinte -
- Nome do usuário
- Endereço de e-mail
- Password
- Digite novamente a senha
- Birthdate
- Gender
- Número de telefone
Feature - Novo registro de usuário.
Verifique se o novo registro do usuário foi malsucedido após passar as entradas incorretas.
Dado que estou em uma nova página de registro de usuário.
Quando eu insiro o nome de usuário e um endereço de e-mail como endereço de e-mail e senha como, e reinsiro a senha como e Data de nascimento como e Sexo como e número de telefone como então o registro do usuário deve ser malsucedido.
Parece um pouco confuso à primeira vista. Então, há alguma maneira melhor de gerenciar esse pedaço de entradas? A resposta pode ser “Tabela de dados”. A tabela de dados é um conjunto de entrada a ser fornecido para uma única tag. Essa tag pode ser GIVEN, WHEN ou THEN.
Vamos escrever o cenário acima com a ajuda da tabela de dados e se parecerá com o seguinte -
Dado que estou em uma nova página de registro de usuário
Quando eu insiro dados válidos na página
| Fields | Values |
| First Name | Tom |
| Last Name | Kenny |
| Email Address | [email protected] |
| Re-enter Email Address | [email protected] |
| Password | Password1 |
| Birthdate | 01 |
Então, o registro do usuário deve ser bem-sucedido.
Exemplo
Vamos automatizar um exemplo de tabela de dados.
Step 1 - Crie um projeto de teste Maven denominado “DataTableTest”.
Vá para Arquivo → Novo → Outros → Maven → Projeto Maven → Avançar.
Providenciar group Id (ID de grupo identificará seu projeto exclusivamente em todos os projetos).
Providenciar artifact Id (Id do artefato é o nome do jar sem versão. Você pode escolher qualquer nome que esteja em minúsculas).
Clique em Concluir.
Abra pom.xml -
Vá para o explorador de pacotes no lado esquerdo do Eclipse.
Expanda o projeto CucumberTest.
Localize o arquivo pom.xml.
Clique com o botão direito e selecione a opção Abrir com “Editor de Texto”.
Adicionar dependência para Selenium: Isso indicará Maven, quais arquivos jar Selenium devem ser baixados do repositório central para o repositório local.
Abra pom.xml está em modo de edição, crie a tag de dependências (<dependencies> </dependencies>), dentro da tag do projeto.
Dentro da tag dependencies, crie a tag dependency. (<dependency> </dependency>).
Forneça as seguintes informações na tag de dependência.
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>2.47.1</version>
</dependency>
Adicionar dependência para Cucumber-Java - Isso indicará Maven, quais arquivos Cucumber devem ser baixados do repositório central para o repositório local.
Crie mais uma tag de dependência.
Forneça as seguintes informações na tag de dependência.
<dependency>
<groupId>info.cukes</groupId>
<artifactId>cucumber-java</artifactId>
<version>1.0.2</version>
<scope>test</scope>
</dependency>
Adicionar dependência para Cucumber-JUnit - Isso indicará Maven, que arquivos Cucumber JUnit devem ser baixados do repositório central para o repositório local.
Crie mais uma tag de dependência.
Forneça as seguintes informações na tag de dependência.
<dependency>
<groupId>info.cukes</groupId>
<artifactId>cucumber-junit</artifactId>
<version>1.0.2</version>
<scope>test</scope>
</dependency>
Adicionar dependência para JUnit - Isso indicará Maven, quais arquivos JUnit devem ser baixados do repositório central para o repositório local.
Crie mais uma tag de dependência.
Forneça as seguintes informações na tag de dependência
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
<scope>test</scope>
</dependency>
Verifique os binários.
Depois que pom.xml for editado com sucesso, salve-o.
Vá para Projeto → Limpar - levará alguns minutos.
Step 2 - Crie um pacote chamado dataTable debaixo src/test/java
Step 3 - Crie um arquivo de feição.
Crie um arquivo de feição, nomeado como dataTable.feature dentro do pacote dataTable (consulte a seção esboço do cenário para etapas mais detalhadas).
Escreva o seguinte texto.
Feature - Tabela de dados
Verifique se o novo registro do usuário não teve êxito após passar entradas incorretas.
Scenario:
Visto que estou na página de registro de novo usuário
Quando eu insiro dados inválidos na página
| Fields | Values |
| First Name | Tom |
| Last Name | Kenny |
| Email Address | [email protected] |
| Re-enter Email Address | [email protected] |
| Password | Password1 |
| Birthdate | 01 |
Então, o registro do usuário deve ser malsucedido
Salve o arquivo.
Step 4 - Criar arquivo de definição de etapa.
Crie o arquivo de definição de etapa denominado 'dataTable.java' dentro do pacote dataTable (consulte a seção esboço do cenário para obter etapas mais detalhadas).
Escreva o seguinte código.
package dataTable;
import java.util.List;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.ui.Select;
import cucumber.annotation.en.Given;
import cucumber.annotation.en.Then;
import cucumber.annotation.en.When;
import cucumber.table.DataTable;
public class stepdefinition {
WebDriver driver = null;
@Given("^I am on new user registration page$")
public void goToFacebook() {
//Intiate web browser instance. driver = new FirefoxDriver();
driver.navigate().to("https://www.facebook.com/");
}
@When("^I enter invalid data on the page$")
public void enterData(DataTable table){
//Initialize data table
List<list> data = table.raw();
System.out.println(data.get(1).get(1));
//Enter data
driver.findElement(By.name("firstname")).sendKeys(data.get(1).get(1));
driver.findElement(By.name("lastname")).sendKeys(data.get(2).get(1));
driver.findElement(By.name("reg_email__")).sendKeys(data.get(3).get(1));
driver.findElement(By.name("reg_email_confirmation__")).
sendKeys(data.get(4).get(1));
driver.findElement(By.name("reg_passwd__")).sendKeys(data.get(5).get(1));
Select dropdownB = new Select(driver.findElement(By.name("birthday_day")));
dropdownB.selectByValue("15");
Select dropdownM = new Select(driver.findElement(By.name("birthday_month")));
dropdownM.selectByValue("6");
Select dropdownY = new Select(driver.findElement(By.name("birthday_year")));
dropdownY.selectByValue("1990");
driver.findElement(By.className("_58mt")).click();
// Click submit button driver.findElement(By.name("websubmit")).click();
}
@Then("^User registration should be unsuccessful$")
public void User_registration_should_be_unsuccessful() {
if(driver.getCurrentUrl().equalsIgnoreCase("https://www.facebook.com/")){
System.out.println("Test Pass");
} else {
System.out.println("Test Failed");
}
driver.close();
}
}
Salve o arquivo.
Step 5 - Crie um arquivo de classe de corredor.
Crie uma classe de execução chamada runTest.java dentro do pacote.
Escreva o seguinte código.
package dataTable;
import org.junit.runner.RunWith;
import cucumber.junit.Cucumber;
@RunWith(Cucumber.class)
@Cucumber.Options(format = {"pretty", "html:target/cucumber"})
public class runTest { }
Salve o arquivo.
Execute o teste usando a opção
Selecione o arquivo runTest.java no explorador de pacotes.
Clique com o botão direito e selecione a opção Executar como.
Selecione o teste JUnit.
Você pode observar as seguintes coisas após uma execução bem-sucedida.
O site do Facebook é carregado.
Os dados serão inseridos na página de registro.
O botão Enviar será clicado.
Veremos que a página inicial não será exibida e “Test Pass” será escrito no console.