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.