Qu'est-ce que le Cucumber Fichier de fonctionnalités et définition des étapes ? (Exemple)

⚡ Résumé intelligent

Cucumber Les fichiers de fonctionnalités décrivent le comportement en langage Gherkin clair, tandis que les définitions d'étapes contiennent le code qui exécute chaque ligne. Cucumber Le projet nécessite les deux, stockés dans une structure de dossiers fixe sous un répertoire de fonctionnalités.

  • (I.e. Deux fichiers : Un fichier de fonctionnalités indique ce qui doit se produire ; un fichier de définition d’étapes indique comment l’automatisation y parvient.
  • ☑️ Mots-clés Gherkin : Les éléments Feature, Scenario, Given, When et Then donnent à un scénario sa structure et sa forme lisible.
  • ✅ Pas de deux-points sur les marches : Les champs Feature et Scenario prennent un deux-points, mais Given, When et Then ne doivent pas en contenir, sous peine d'être ignorés.
  • 🧪 Ensembles de données : Le schéma de scénario, accompagné d'un tableau d'exemples, permet de rejouer un scénario à partir de plusieurs lignes de données d'entrée.
  • ️ Configuration partagée : L'arrière-plan extrait les étapes répétées de chaque scénario d'une fonctionnalité.
  • (I.e. Correspondant à: Cucumber Le mot-clé est ignoré lors de la mise en correspondance, de sorte que deux étapes peuvent ne jamais partager le même texte.

Cucumber Explication du fichier de fonctionnalités et de la définition d'étape à l'aide d'un exemple

Chaque projet Cucumber possède un répertoire racine unique nommé « features ». C'est là que se trouvent toutes vos fonctionnalités Cucumber. Dans ce répertoire, vous trouverez également les répertoires « step_definition » et « support ».

Cette disposition est importante, car Cucumber Il détecte vos fichiers par convention plutôt que par configuration. Un fichier de fonctionnalités situé en dehors du répertoire des fonctionnalités n'est tout simplement jamais lu.

Qu'est-ce que le « Fichier de fonctionnalités » ?

Le fichier de fonctionnalités contient une description de haut niveau du Scénario de test En termes simples, on l'appelle CornichonGherkin est un langage textuel en anglais simple.

Cucumber Le fichier de fonctionnalités comprend les composants suivants :

  • Fonctionnalité: Une fonctionnalité décrirait le script de test actuel qui doit être exécuté.
  • Scénario: Le scénario décrit les étapes et les résultats attendus pour un scénario de test particulier.
  • Aperçu du scénario: Le même scénario peut être exécuté pour plusieurs ensembles de données à l’aide du plan du scénario. Les données sont fournies par une structure tabulaire séparée par (II).
  • Donné: Il précise le contexte du texte à exécuter. En utilisant les tables de données « Given », l'étape peut également être paramétrée.
  • Lorsque vous« When » spécifie l’action de test qui doit être effectuée.
  • EnsuiteLe résultat attendu du test peut être représenté par « Alors ».

Chaque fichier contient une fonctionnalité. Les scénarios qui le suivent sont les exemples concrets illustrant cette fonctionnalité, et chaque scénario suit le même schéma : description du contexte initial, description d’un événement, description du résultat attendu.

Ensuite, nous apprendrons comment écrire un fichier de fonctionnalités dans Cucumber avec exemple.

Exemple de fichier de fonctionnalités :

L'exemple original publié avec ce tutoriel est reproduit ci-dessous à l'identique.

Feature: Visit career guide page in career.guru99.com
Scenario: Visit career.guru99.com
Given: I am on career.guru99.com
When: I click on career guide menu
Then: I should see career guide page

⚠️ Correction : L'exemple ci-dessus place un deux-points après Donné, Lorsque vous et EnsuiteGherkin place un deux-points après Fonctionnalité et Scénario seulement. Un mot-clé « étape » suivi de deux points n’est pas interprété comme une étape, donc Cucumber La ligne est ignorée sans message d'erreur. Le fichier corrigé se présente comme suit.

Feature: Visit career guide page in career.guru99.com

  Scenario: Visit career.guru99.com
    Given I am on career.guru99.com
    When I click on career guide menu
    Then I should see career guide page

L'indentation n'est pas obligatoire pour l'analyseur syntaxique, mais deux espaces par niveau constituent la convention et facilitent grandement la lecture des longues entités. L'animation ci-dessous illustre le traitement d'un fichier d'entités, chaque étape devenant verte au fur et à mesure de son passage.

Animation d'une Cucumber fichier de fonctionnalités exécuté avec chaque étape Gherkin signalée tour à tour

Qu’est-ce que la « Définition des étapes » ?

La définition des étapes mappe les étapes du scénario de test dans les fichiers de fonctionnalités (introduits par Given/When/Then) au code. Il exécute les étapes de l'application sous test et vérifie les résultats par rapport aux résultats attendus. Pour qu'une définition d'étape soit exécutée, elle doit correspondre au composant donné dans une fonctionnalité. La définition des étapes est définie dans les fichiers Ruby sous «features/step_definitions/*_steps.rb».

La correspondance est établie uniquement sur la base du texte de l'étape. Cucumber ne tient pas compte du mot-clé lorsqu'il recherche une définition, c'est pourquoi deux étapes dans la même suite peuvent ne jamais contenir de texte identique, même si l'une est un Given et l'autre un Then.

Exemple de définition d'étape: Ici nous utiliserons ci-dessus Cucumber Exemple de fichier de fonctionnalités lors de la navigation sur career.guru99.com. Nous utiliserons des fonctionnalités telles que « Quand, Alors, Étant donné », comme illustré ci-dessous. Cucumber Exemples de fichiers de fonctionnalités.

Step 1:

Given (/^ I am on career.guru99.com$/) do

Browser.goto "http://career.guru99.com" -This will visit career.guru99 on browser

end

Step 2:
When (/^ click on career guide menu$/) do

Browser.text (:name, " career guide" ).click – This will click "career guide menu"

end

Step 3:

Then (/^ I should see career guide page$/) do

Browser.goto "http://career.guru99.com/category/career-guide/" - It will visit "career guide page"

end

⚠️ Remarque sur les langues : les définitions ci-dessus sont en Ruby, qui est l'endroit où Cucumber a commencé et c'est pourquoi le dossier s'appelle ainsi step_definitions et les fichiers se terminent par _steps.rbLe même fichier de fonctionnalités pilote les définitions d'étapes écrites dans Java, JavaScénario, Python ou C# sans aucune modification du Gherkin. Cucumber-JVM : l'expression régulière est déplacée dans une annotation sur une méthode :

@Given("I am on career.guru99.com")
public void i_am_on_the_career_page() {
    driver.get("http://career.guru99.com");
}

Quel que soit le langage choisi, la définition de l'étape est le seul endroit où les détails d'implémentation ont leur place. Keeping Ce sont les sélecteurs et les appels HTTP sortant du fichier de fonctionnalités qui permettent à un non-programmeur de lire le scénario. premier Cucumber scénario La procédure pas à pas permet de construire ce jumelage de bout en bout.

Plan de scénario et exemples dans un fichier de fonctionnalités

Copier un scénario trois fois pour modifier une seule valeur est la méthode la plus courante pour rendre un fichier de fonctionnalités illisible. Aperçu du scénario remplace les copies par un modèle et un Exemples Le tableau fournit les valeurs.

Les paramètres sont écrits entre chevrons et doivent correspondre à un en-tête de colonne du tableau situé en dessous. Cucumber Il substitue les valeurs avant de rechercher une définition d'étape correspondante, de sorte que les définitions elles-mêmes ne nécessitent aucun traitement particulier.

Scenario Outline: Search the career guide
  Given I am on career.guru99.com
  When I search for "<keyword>"
  Then I should see the <section> section

  Examples:
    | keyword   | section       |
    | interview | Interview Tips|
    | resume    | Resume Guide  |

Voici quelques points à retenir lors de l'utilisation de plans :

  • Le plan est exécuté une fois par ligne de données. La première ligne est l'en-tête et n'est jamais exécutée.
  • Un plan de scénario doit être suivi d'au moins une section d'exemples, sinon rien ne s'exécute.
  • Les barres verticales du tableau n'ont pas besoin d'être alignées, bien que leur alignement permette de conserver la lisibilité du fichier.
  • Limitez la taille du tableau. Un tableau de trente lignes indique généralement que les données doivent être regroupées dans un grand nombre de lignes. test basé sur les données à la place.

Contexte, et, mais et autres mots-clés Gherkin

Outre les six composants énumérés précédemment, Gherkin possède une poignée de mots-clés qui permettent de rendre lisibles les fichiers de fonctionnalités plus longs.

  • Présentation — Un bloc d'étapes Given qui s'exécute avant chaque scénario de la fonctionnalité. Il évite de répéter la même précondition en début de chaque scénario.
  • Et et Mais — des alternatives à la répétition de « Given », « When » ou « Then ». Elles sont plus fluides et se comportent de manière identique ; Cucumber Les correspondances avec le texte de l'étape sont valables dans les deux cas.
  • Règle — un groupe optionnelping, ajouté dans Gherkin 6, qui rassemble les scénarios illustrant une règle métier.
  • Chaînes de documents — un bloc de texte délimité par trois guillemets doubles, transmis à la définition de l'étape comme argument unique lorsqu'une seule ligne ne suffit pas.
  • Tableaux de données — lignes délimitées par des barres verticales, rattachées à une seule étape, utilisées pour transmettre une liste de valeurs à cette étape.
  • Tags — étiquettes commençant par un arobase, placées au-dessus d'une fonctionnalité ou d'un scénario afin qu'un sous-ensemble puisse être sélectionné lors de l'exécution.
  • Commentaires — une ligne commençant par un dièse. Les commentaires ne sont autorisés qu'en début de ligne, et Gherkin ne prend pas en charge les commentaires de bloc.

Une fois assemblé, un fichier de fonctionnalités avec une configuration partagée ressemble à ceci :

Feature: Career guide navigation

  Background:
    Given I am on career.guru99.com

  Scenario: Open the career guide menu
    Given I am signed in
    And my profile is complete
    When I click on career guide menu
    Then I should see career guide page
    But I should not see the admin panel

Erreurs courantes dans les fichiers de fonctionnalités et comment les corriger

pont Cucumber Les problèmes signalés par les débutants ne sont pas des défauts du framework. Ce sont de petites violations des règles Gherkin qui passent inaperçues.

Erreur Ce qui se produit Fixer
Deux points après Given, When ou Then La ligne n'est pas reconnue comme une étape et est ignorée. Utilisez uniquement un deux-points après « Fonctionnalité » et « Scénario ».
Deux étapes avec un texte identique Cucumber les traite comme des doublons car le mot-clé est ignoré Reformulez une des étapes pour que les deux phrases aient un sens différent.
Fichier de fonctionnalités en dehors du répertoire des fonctionnalités Le fichier n'est jamais découvert et aucun test n'est effectué. Gardez chaque .feature fichier sous le dossier des fonctionnalités
Quinze étapes dans un seul scénario Le scénario cesse de fonctionner comme documentation Visez trois à cinq étapes et détaillez la définition de chaque étape.
Ensuite, effectue des assertions sur une ligne de base de données. Le test réussit alors que le comportement visible par l'utilisateur est défaillant. Effectuer une assertion sur une sortie observable telle que la page ou la réponse
Plan de scénario sans tableau d'exemples Le modèle ne s'exécute jamais. Ajoutez une section Exemples directement sous le plan

Corriger ces problèmes avant que la suite ne s'étoffe est bien moins coûteux que de les corriger après coup, car chaque scénario écrit entre-temps reproduit la même structure. Une fois les fichiers de fonctionnalités fonctionnels, l'étape suivante consiste à connecter le projet (voir la section correspondante). Cucumber installation visite guidée et plus large tests d'automatisation série.

FAQ

Non. Un fichier .feature ne peut déclarer qu'une seule fonctionnalité, même s'il peut contenir autant de scénarios que vous le souhaitez. Si vous avez besoin d'une deuxième fonctionnalité, créez un deuxième fichier ; cette contrainte permet de conserver la navigabilité du dossier à mesure que la suite s'agrandit.

Non. Gherkin est traduit dans plus de soixante-dix langues. L'ajout d'un en-tête de langue sur la première ligne du fichier permet de modifier les mots-clés, ce qui permet à une équipe de rédiger des scénarios dans la langue parlée par ses experts du domaine.

Il contient tout ce qui ne constitue pas une définition d'étape : configuration de l'environnement, configuration du navigateur, hooks exécutés avant ou après un scénario et code d'assistance partagé. Keeping Il empêche séparément les fichiers de définition d'étape de se transformer en un fichier vide.ping sol.

Cucumber Le système signale l'étape comme non définie plutôt que comme ayant échoué et affiche un extrait de code suggéré à insérer dans un fichier de définition d'étapes. Le scénario est marqué comme non réussi ; une étape non définie n'est donc jamais comptabilisée comme une réussite.

Une étiquette placée au-dessus d'une fonctionnalité ou d'un scénario permet à l'exécuteur de sélectionner un sous-ensemble lors de l'exécution, indépendamment de l'arborescence des dossiers. Les équipes utilisent généralement des étiquettes pour créer un ensemble de tests préliminaires, un ensemble de tests lents et un ensemble de tests en cours, puis exécutent uniquement les éléments nécessaires à une étape donnée du pipeline.

Les grands modèles de langage s'inspirent bien de Gherkin à partir d'un critère d'acceptation et génèrent encore plus rapidement les squelettes de définition correspondants. RevExaminez le résultat pour repérer les textes d'étapes dupliqués et les scénarios qui divulguent des détails d'implémentation, là où le Gherkin généré se trompe généralement.

Tout à fait. À partir d'un fichier de fonctionnalités ouvert, Copilot déduit l'expression régulière et la signature de la méthode pour une étape non définie, puis complète le corps de la méthode à partir du code environnant. Il s'agit d'une première ébauche ; les assertions proposées nécessitent encore une vérification humaine.

Oui, et c'est précisément le principe de cette conception. Les définitions résident dans un dossier partagé et sont mises en correspondance par texte, et non par fichier. Ainsi, une étape de connexion écrite une seule fois est réutilisée par toutes les fonctionnalités qui en ont besoin. C'est pourquoi la duplication du texte des étapes est interdite.

Résumez cet article avec :