Cucumber

Introduction à Cucumber

Cucumber est un outil permettant de réaliser des tests automatisés en se basant sur des spécifications compréhensibles par les parties prenantes (Business, Développeurs, QA). Il utilise le langage **Gherkin** pour écrire des scénarios lisibles.

Avantages de Cucumber

Installation et Configuration

Prérequis

  1. Java JDK installé et configuré dans le PATH.
  2. Un IDE comme IntelliJ IDEA ou Eclipse.
  3. Apache Maven pour gérer les dépendances.

Étapes d'installation

1. Créez un projet Maven.

mvn archetype:generate -DgroupId=com.example -DartifactId=cucumber-example -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

2. Ajoutez les dépendances dans le fichier pom.xml :

<dependencies> <dependency> <groupId>io.cucumber</groupId> <artifactId>cucumber-java</artifactId> <version>7.11.0</version> </dependency> <dependency> <groupId>io.cucumber</groupId> <artifactId>cucumber-junit</artifactId> <version>7.11.0</version> </dependency> <dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-java</artifactId> <version>4.11.0</version> </dependency> </dependencies>

3. Structurez votre projet :

Créer un Test Basique avec Cucumber

1. Écrire un fichier Gherkin

Créez un fichier login.feature :

Feature: Connexion à l'application Scenario: Connexion réussie avec des identifiants valides Given L'utilisateur est sur la page de connexion When L'utilisateur saisit "admin" et "password123" And L'utilisateur clique sur le bouton de connexion Then Un message "Connexion réussie" s'affiche

2. Écrire les Step Definitions

Créez un fichier LoginSteps.java :

import io.cucumber.java.en.*; public class LoginSteps { @Given("L'utilisateur est sur la page de connexion") public void ouvrirPageConnexion() { System.out.println("Naviguer vers la page de connexion"); } @When("L'utilisateur saisit {string} et {string}") public void saisirIdentifiants(String username, String password) { System.out.println("Saisir le nom d'utilisateur : " + username); System.out.println("Saisir le mot de passe : " + password); } @And("L'utilisateur clique sur le bouton de connexion") public void cliquerConnexion() { System.out.println("Cliquer sur le bouton de connexion"); } @Then("Un message {string} s'affiche") public void verifierMessage(String message) { System.out.println("Vérifier le message : " + message); } }

3. Configurer le Runner

Créez un fichier TestRunner.java :

import org.junit.runner.RunWith; import io.cucumber.junit.Cucumber; import io.cucumber.junit.CucumberOptions; @RunWith(Cucumber.class) @CucumberOptions( features = "src/test/resources", glue = "com.example.steps", plugin = {"pretty", "html:target/cucumber-reports"} ) public class TestRunner { }

Page Object Model (POM) avec Cucumber

Exemple

1. Créer une classe pour une page (LoginPage.java) :

import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.support.FindBy; import org.openqa.selenium.support.PageFactory; public class LoginPage { WebDriver driver; @FindBy(id = "username") WebElement usernameField; @FindBy(id = "password") WebElement passwordField; @FindBy(id = "loginButton") WebElement loginButton; public LoginPage(WebDriver driver) { this.driver = driver; PageFactory.initElements(driver, this); } public void enterUsername(String username) { usernameField.sendKeys(username); } public void enterPassword(String password) { passwordField.sendKeys(password); } public void clickLogin() { loginButton.click(); } }

2. Modifier les Step Definitions :

import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; public class LoginSteps { WebDriver driver = new ChromeDriver(); LoginPage loginPage = new LoginPage(driver); @Given("L'utilisateur est sur la page de connexion") public void ouvrirPageConnexion() { driver.get("https://example.com/login"); } @When("L'utilisateur saisit {string} et {string}") public void saisirIdentifiants(String username, String password) { loginPage.enterUsername(username); loginPage.enterPassword(password); } @And("L'utilisateur clique sur le bouton de connexion") public void cliquerConnexion() { loginPage.clickLogin(); } @Then("Un message {string} s'affiche") public void verifierMessage(String message) { // Ajouter des assertions pour vérifier le message. } }
Retour à l'accueil