Pepino - Anotações
Annotationé um texto predefinido, que possui um significado específico. Permite ao compilador / interpretador saber o que deve ser feito na execução. Pepino tem as seguintes anotações -
Given -
Ele descreve o pré-requisito para que o teste seja executado.
Exemplo - GIVEN Eu sou um usuário do Facebook
When -
Ele define o ponto de gatilho para qualquer execução de cenário de teste.
Exemplo - QUANDO eu inserir "<nome de usuário>"
Then -
Em seguida, mantém o resultado esperado para o teste a ser executado.
Exemplo - ENTÃO o login deve ser bem-sucedido.
And -
Ele fornece a condição AND lógica entre quaisquer duas instruções. AND pode ser usado em conjunto com as instruções GIVEN, WHEN e THEN.
Exemplo - QUANDO eu insiro meu "<nome de usuário>" E insiro minha "<senha>"
But -
Significa condição OR lógica entre quaisquer duas declarações. OR pode ser usado em conjunto com as instruções GIVEN, WHEN e THEN.
Exemplo - ENTÃO o login deve ser bem-sucedido. MAS a página inicial não deve faltar.
Scenario -
Os detalhes sobre o cenário em teste precisam ser capturados após a palavra-chave “Cenário:”
Exemplo -
Cenário:
DADO Eu sou um usuário do Facebook
QUANDO eu entro no meu
E eu entro no meu
ENTÃO o login deve ser bem-sucedido.
MAS a página inicial não deve faltar.
Scenario Outline - (a ser abordado mais tarde)
Examples - (a ser abordado mais tarde)
Background -
O histórico geralmente contém instruções sobre o que configurar antes da execução de cada cenário. No entanto, ele é executado após o gancho “Antes” (a ser abordado posteriormente). Portanto, isso é ideal para ser usado para código quando quisermos configurar o navegador da web ou estabelecer a conectividade do banco de dados.
Exemplo -
Fundo:
Vá para a página inicial do Facebook.
Cenário de Exemplo
Vamos automatizar um cenário para entender melhor as anotações.
Step 1
Crie um projeto de teste Maven denominado como AnnotationTest.
Vá para Arquivo → Novo → Outros → Maven → Projeto Maven → Avançar.
Forneça a ID do grupo (a ID do grupo identificará seu projeto exclusivamente em todos os projetos).
Forneça a Id do artefato (a Id do artefato é o nome do jar sem versão. Você pode escolher qualquer nome que esteja em minúsculas).
Clique em Concluir.
Abrir pom.xml −
Vá para o explorador de pacotes no lado esquerdo do Eclipse.
Expanda o projeto AnnotationTest.
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á no modo de edição, crie a tag de dependências (<dependencies> </dependencies>), dentro da tag do projeto.
Dentro da tag de dependências, crie a tag de dependência (<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 informações a seguir 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, quais 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 Annotation em src/test/java
Selecione o projeto recém-criado.
Clique com o botão direito e selecione 'Novo'.
Selecione a opção como 'Pacote'.
Nomeie-o como 'Anotação'.
Salve isso.
Step 3
Crie um arquivo de feição chamado annotation.feature.
Selecione e clique com o botão direito no esboço do pacote.
Clique em 'Novo' arquivo.
Dê ao arquivo um nome como outline.feature.
Escreva o seguinte texto dentro do arquivo e salve-o.
Feature: annotation
#This is how background can be used to eliminate duplicate steps
Background:
User navigates to Facebook Given
I am on Facebook login page
#Scenario with AND
Scenario:
When I enter username as "TOM"
And I enter password as "JERRY"
Then Login should fail
#Scenario with BUT
Scenario:
When I enter username as "TOM"
And I enter password as "JERRY"
Then Login should fail
But Relogin option should be available
Step 4
Crie um arquivo de definição de etapa.
Selecione e clique com o botão direito no esboço do pacote.
Clique em 'Novo' arquivo.
Dê o nome do arquivo como annotation.java
Escreva o seguinte texto dentro do arquivo e salve-o.
package Annotation;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import cucumber.annotation.en.Given;
import cucumber.annotation.en.Then;
import cucumber.annotation.en.When;
public class annotation {
WebDriver driver = null;
@Given("^I am on Facebook login page$")
public void goToFacebook() {
driver = new FirefoxDriver();
driver.navigate().to("https://www.facebook.com/");
}
@When("^I enter username as \"(.*)\"$")
public void enterUsername(String arg1) {
driver.findElement(By.id("email")).sendKeys(arg1);
}
@When ("^I enter password as \"(.*)\"$")
public void enterPassword(String arg1) {
driver.findElement(By.id("pass")).sendKeys(arg1);
driver.findElement(By.id("u_0_v")).click();
}
@Then("^Login should fail$")
public void checkFail() {
if(driver.getCurrentUrl().equalsIgnoreCase(
"https://www.facebook.com/login.php?login_attempt=1&lwv=110")){
System.out.println("Test1 Pass");
} else {
System.out.println("Test1 Failed");
}
driver.close();
}
@Then("^Relogin option should be available$")
public void checkRelogin() {
if(driver.getCurrentUrl().equalsIgnoreCase(
"https://www.facebook.com/login.php?login_attempt=1&lwv=110")){
System.out.println("Test2 Pass");
} else {
System.out.println("Test2 Failed");
}
driver.close();
}
}
Step 5
Crie um arquivo de classe de corredor.
Selecione e clique com o botão direito no esboço do pacote.
Clique em 'Novo' arquivo.
Dê um nome ao arquivo, como runTest.java
Escreva o seguinte texto dentro do arquivo e salve-o.
package Annotation;
import org.junit.runner.RunWith;
import cucumber.junit.Cucumber;
@RunWith(Cucumber.class)
@Cucumber.Options(format = {"pretty", "html:target/cucumber"})
public class runTest { }
Step 6
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 ‘Run as’
Selecione o teste JUnit.
Você observará as seguintes coisas ao executar este arquivo de classe -
O Facebook é aberto em uma nova instância do navegador Firefox.
TOM será passado como uma entrada para o campo de nome de usuário.
JERRY será passado como uma entrada para o campo de senha.
O login será clicado.
A mensagem será exibida no navegador sobre o login malsucedido.
No console, você verá “Test Pass” impresso
Resultado da etapa 1. a 5. Será executado novamente para o nome de usuário como "" e a senha como "".