Pepino - Esboço do Cenário
Scenario outlinebasicamente substitui variáveis / palavras-chave com o valor da tabela. Cada linha da tabela é considerada um cenário.
Vamos continuar com o mesmo exemplo de recurso de login do Facebook. Até agora, executamos um cenário: ao fornecer o nome de usuário correto, o login é bem-sucedido. Agora, suponha que desejamos verificar se o login foi bem-sucedido para todos os três tipos de entradas possíveis, que são nome de usuário, endereço de e-mail ou número de telefone. Para conseguir isso, precisaremos escrever três cenários diferentes, onde cada cenário irá variar com o tipo de entrada, o login foi bem-sucedido. Nesse caso, os cenários serão semelhantes aos seguintes.
Scenario:
Dado que o usuário navega para o Facebook
Quando eu inserir o nome de usuário e a senha corretos
Então o login deve ser bem sucedido
Scenario:
Dado que o usuário navega para o Facebook
Quando eu inserir o endereço de e-mail e a senha corretos
Então o login deve ser bem sucedido
Scenario:
Dado que o usuário navega para o Facebook
Quando eu inserir o número de telefone e a senha corretos
Então o login deve ser bem sucedido
Aqui, se observarmos de perto, para os três cenários acima: as declarações são as mesmas, apenas o parâmetro de entrada (nome de usuário / endereço de e-mail / número de telefone) está mudando. É aí que entra em cena a importância do esboço do cenário.
Quando definimos qualquer cenário com esboço de cenário, podemos especificar um cenário de teste e, na parte inferior, podemos fornecer uma série de entradas. O cenário será executado tantas vezes quanto o número de entradas fornecidas.
Exemplo
Vamos criar um exemplo de esboço de cenário -
Step 1 - Crie um projeto de teste Maven denominado como ScenarioOutlineTest
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 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á 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>
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 "esboço" em src/test/java
Step 3 - Crie um arquivo de feição chamado “outline.feature”
Selecione e clique com o botão direito no esboço do pacote.
Clique em 'Novo' arquivo.
Dê o nome do arquivo, como “outline.feature”
Escreva o seguinte texto dentro do arquivo e salve-o.
Feature - Esboço do cenário
Scenario Outline - Funcionalidade de login para um site de rede social.
Dado que o usuário navega para o Facebook
Quando eu insiro o nome de usuário como "<username>" e a senha como "<senha>"
Então o login deve ser malsucedido
Example -
| username | password |
| username1 | password1 |
| username2 | password2 |
Note- Aqui, a anotação de exemplo descreve a faixa de entrada a ser fornecida na execução do cenário. O cenário de teste será executado para cada uma das entradas fornecidas. Portanto, no exemplo fornecido, o cenário de teste será executado três vezes.
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 stepdefinition.java
Escreva o seguinte texto dentro do arquivo e salve-o.
package Outline;
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 stepdefinition {
WebDriver driver = null;
@Given("^user navigates to facebook$")
public void goToFacebook() {
driver = new FirefoxDriver();
driver.navigate().to("https://www.facebook.com/");
}
@When("^I enter Username as \"([^\"]*)\" and Password as \"([^\"]*)\"$")
public void I_enter_Username_as_and_Password_as(String arg1, String arg2) {
driver.findElement(By.id("email")).sendKeys(arg1);
driver.findElement(By.id("pass")).sendKeys(arg2);
driver.findElement(By.id("u_0_v")).click();
}
@Then("^login should be unsuccessful$")
public void validateRelogin() {
if(driver.getCurrentUrl().equalsIgnoreCase(
"https://www.facebook.com/login.php?login_attempt=1&lwv=110")){
System.out.println("Test Pass");
} else {
System.out.println("Test Failed");
}
driver.close();
}
}
Note- No código acima, temos que definir uma função com dois argumentos de entrada: um nome de usuário e outro será para senha. Portanto, para cada conjunto de entrada fornecido no tag de exemplo, Conjunto de GIVEN, WHEN e THEN será executado.
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ê o nome do arquivo, como runTest.java
Escreva o seguinte texto dentro do arquivo e salve-o.
package Outline;
import org.junit.runner.RunWith;
import cucumber.junit.Cucumber;
@RunWith(Cucumber.class)
@Cucumber.Options(format = {"pretty", "html:target/cucumber"})
public class runTest { }
Execute o teste usando a opção -
Selecione runTest.java arquivo do explorador de pacote.
Clique com o botão direito e selecione a opção ‘Run as’.
Selecione o teste JUnit.
Você observará o seguinte quando executar este arquivo de classe
O Facebook é aberto em uma nova instância do navegador Firefox.
O nome de usuário1 e a senha1 serão passados como entrada para o campo de nome de usuário e senha.
O login será clicado.
A mensagem será exibida no navegador sobre o login malsucedido.
No console, você verá “Test Pass” impresso.
Os resultados da etapa 1 a 5 serão executados novamente para o nome de usuário2 e a senha2.
Em resumo, quando o cenário não muda, mas apenas o valor dos dados é alterado, é aconselhável usar tabelas de dados de esboço do cenário.