Pepino - Ganchos

Pepino hooknos permite gerenciar melhor o fluxo de trabalho do código e nos ajuda a reduzir a redundância do código. Podemos dizer que é uma etapa invisível, que nos permite realizar nossos cenários ou testes.

Para entender melhor essa noção, vamos dar um exemplo de um arquivo de recurso e um arquivo de definição de etapa.

A parte destacada na instrução fornecida realmente faz o trabalho de configurar o webdriver e encerrar a sessão do webdriver. Portanto, na verdade não é relevante para a essência da “declaração fornecida” e é mais como uma configuração para o teste. Além disso, se pensarmos com uma perspectiva mais ampla, no caso de vários cenários para esse recurso, a configuração e a limpeza do webdriver serão executadas com cada instrução fornecida. Logicamente, faz sentido que a configuração e a limpeza sejam executadas apenas uma vez.

Portanto, para trazer otimização, ganchos podem ser utilizados. Mais frequentemente, usamos dois tipos de ganchos: gancho “Antes” e gancho “Depois”. Método / função / parte do código, definido nos ganchos Antes e Depois, sempre executa, mesmo se o cenário for aprovado ou falhar.

Como o nome sugere, antes do gancho ser executado bem antes de qualquer outro cenário de teste e depois do gancho ser executado após a execução de todos os cenários.

Ganchos são definidos apenas no arquivo de definição de etapa.

Vamos automatizar um exemplo de antes e depois do gancho.

Step 1 - Crie o projeto Maven como hookTest, adicione a dependência necessária em pom.xml.

Step 2 - Crie um pacote Java denominado hookTest em src/test/java

Step 3 - Crie um arquivo de definição de etapa denominado como hookTest.java sob o pacote.

package hookTest; 

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 hookTest {
   WebDriver driver = null; 
	
   @Before public void setUp(){ 
      driver = new FirefoxDriver(); 
   } 
	
   @Given("^user navigates to facebook$") 
   public void goToFacebook() { 
      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(); 
   } 
	
   @After public void cleanUp(){ 
      driver.close(); 
   } 
}

Step 4 - Crie um arquivo de recurso denominado “hookTest.feature” no pacote.

Feature - Esboço do cenário.

Scenario Outline - Teste de gancho

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

Exemplos

| username  | password  | 
| username1 | password1 |

Step 5 - Crie um arquivo de classe de corredor.

  • Crie a classe de execução como runTest.java dentro do pacote dataTable (consulte o esboço do cenário da seção para etapas mais detalhadas).

  • Escreva o seguinte código.

package hookTest;
 
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.

Portanto, agora, quando executarmos isso, a seguir será a seqüência de execução.

  • Antes do gancho - Configure o webdriver e outros pré-requisitos para executar o teste.

  • Declaração dada

  • Quando declaração

  • Então declaração

  • Após o gancho - feche o webdriver e faça o processo de limpeza.

Ganchos etiquetados

Também podemos indicar se queremos que os ganchos antes e depois sejam executados apenas com uma tag específica. Example- @Before ('@ Web'). O mesmo conceito de tag lógico e / ou pode ser aplicado com ganchos também.Example - @Before (@ dev, @ wip), @Before (@ dev, ~ @ wip)