Concombre - Crochets

Concombre hooknous permet de mieux gérer le flux de travail du code et nous aide à réduire la redondance du code. On peut dire que c'est une étape invisible, qui nous permet de réaliser nos scénarios ou tests.

Pour mieux comprendre cette notion, prenons un exemple de fichier d'entités et de fichier de définition d'étape.

La partie en surbrillance dans l'instruction donnée fait en fait le travail de configurer le pilote Web et de mettre fin à la session du pilote Web. Donc, ce n'est en fait pas pertinent par rapport à l'essence de «déclaration donnée», et cela ressemble plus à une configuration pour le test. De plus, si nous réfléchissons avec une perspective plus large, alors en cas de scénarios multiples pour cette fonctionnalité, cette configuration et ce nettoyage du pilote Web s'exécuteront avec chaque instruction donnée. Logiquement, il est logique que la configuration et le nettoyage soient exécutés une seule fois.

Donc, pour apporter une optimisation, des crochets peuvent être utilisés. Le plus souvent, nous utilisons deux types d'hameçons: l'hameçon «Avant» et l'hameçon «Après». Méthode / fonction / morceau de code, définis dans les hooks Before et After, toujours exécutés, même si le scénario est réussi ou échoué.

Comme son nom l'indique, avant le hook est exécuté bien avant tout autre scénario de test, et après le hook est exécuté après l'exécution de tous les scénarios.

Les hooks sont définis dans le fichier de définition d'étape uniquement.

Automatisons un exemple de hook avant et après.

Step 1 - Créez un projet Maven en tant que hookTest, ajoutez les dépendances nécessaires dans pom.xml.

Step 2 - Créez un package Java nommé hookTest sous src/test/java

Step 3 - Créez un fichier de définition d'étape nommé comme hookTest.java sous le paquet.

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 - Créez un fichier de fonctionnalités nommé «hookTest.feature» sous le package.

Feature - Aperçu du scénario.

Scenario Outline - Test de crochet

L'utilisateur donné accède à Facebook

Lorsque j'entre le nom d'utilisateur comme "<username>" et le mot de passe comme "<mot de passe>"

La connexion devrait alors échouer

Exemples

| username  | password  | 
| username1 | password1 |

Step 5 - Créez un fichier de classe de coureur.

  • Créez la classe runner en tant que runTest.java dans le package dataTable (voir la section aperçu du scénario pour des étapes plus détaillées).

  • Écrivez le code suivant.

package hookTest;
 
import org.junit.runner.RunWith; 
import cucumber.junit.Cucumber; 

@RunWith(Cucumber.class) 
@Cucumber.Options(format = {"pretty", "html:target/cucumber"}) 
 
public class runTest { }
  • Enregistrez le fichier.

  • Exécutez le test en utilisant l'option -

    • Sélectionnez le fichier runTest.java dans l'explorateur de packages.

    • Cliquez avec le bouton droit de la souris et sélectionnez l'option Exécuter en tant que.

    • Sélectionnez le test JUnit.

Alors maintenant, lorsque nous exécuterons ceci, la séquence d'exécution sera la suivante.

  • Avant le raccordement - Configurez le pilote Web et d'autres conditions préalables pour exécuter le test.

  • Déclaration donnée

  • Quand déclaration

  • Puis déclaration

  • Après le hook - Fermez le Webdriver et effectuez le processus de nettoyage.

Crochets étiquetés

Nous pouvons également indiquer si nous voulons que les hooks avant et après soient exécutés avec une balise spécifique uniquement. Example- @Before ('@ Web'). Le même concept de balise logique et / ou peut également être appliqué avec des crochets.Example - @Before (@ dev, @ wip), @Before (@ dev, ~ @ wip)