Was ist Cucumber Feature-Datei und Schrittdefinition? (Beispiel)

⚡ Intelligente Zusammenfassung

Cucumber Feature-Dateien beschreiben das Verhalten in der einfachen Gherkin-Sprache, während Schrittdefinitionen den Code enthalten, der jede Zeile ausführt. Cucumber Das Projekt benötigt beides, gespeichert in einer festen Ordnerstruktur unterhalb eines Feature-Verzeichnisses.

  • 🔘 Zwei Dateien: Eine Feature-Datei legt fest, was geschehen soll; eine Schrittdefinitionsdatei legt fest, wie die Automatisierung dies umsetzt.
  • ☑️ Gherkin-Schlüsselwörter: Die Elemente Feature, Scenario, Given, When und Then geben einem Szenario seine Struktur und seine lesbare Form.
  • ✅ Keine Doppelpunkte bei Stufen: Feature und Scenario benötigen einen Doppelpunkt, Given, When und Then hingegen nicht, da der Schritt sonst ignoriert wird.
  • 🧪 Datensätze: Szenarioübersicht plus Beispieltabelle spielt ein Szenario anhand vieler Eingabezeilen ab.
  • ️ Gemeinsame Einrichtung: Hintergrund-Lifts wiederholen sich. Gegebene Schritte werden in jedem Szenario eines Features ausgeführt.
  • 📊 Passend dazu: Cucumber Beim Abgleich wird das Schlüsselwort ignoriert, sodass zwei Schritte möglicherweise nie denselben Text haben.

Cucumber Feature-Datei und Schrittdefinition anhand eines Beispiels erläutert

Jedes Cucumber-Projekt enthält im Stammverzeichnis ein Verzeichnis namens „features“. Hier befinden sich alle Cucumber-Features. In diesem Verzeichnis finden Sie außerdem die Unterverzeichnisse „step_definition“ und „support“.

Diese Anordnung ist wichtig, weil Cucumber Es erkennt Ihre Dateien anhand von Konventionen und nicht anhand von Konfigurationen. Eine Feature-Datei, die sich außerhalb des Feature-Verzeichnisses befindet, wird einfach nie gelesen.

Was ist eine „Feature-Datei“?

Die Funktionsdatei enthält eine allgemeine Beschreibung der Testszenario In einfachen Worten. Es ist bekannt als GurkeGherkin ist eine einfache englische Textsprache.

Cucumber Die Feature-Datei besteht aus folgenden Komponenten —

  • Funktion: Eine Funktion würde das aktuelle Testskript beschreiben, das ausgeführt werden muss.
  • Szenario: Szenario beschreibt die Schritte und das erwartete Ergebnis für einen bestimmten Testfall.
  • Szenario-Übersicht: Mithilfe der Szenarioübersicht kann dasselbe Szenario für mehrere Datensätze ausgeführt werden. Die Daten werden durch eine tabellarische Struktur bereitgestellt, die durch (II) getrennt ist.
  • Gegeben: Gibt den Kontext des auszuführenden Textes an. Durch die Verwendung von Datentabellen „Given“ kann der Schritt auch parametrisiert werden.
  • Wenn die Funktion „When“ gibt die Testaktion an, die durchgeführt werden soll.
  • DannDas erwartete Ergebnis des Tests kann mit „Dann“ dargestellt werden.

Eine Datei enthält ein Feature. Die darunter stehenden Szenarien sind konkrete Beispiele, die das Feature veranschaulichen, und jedes Szenario folgt dem gleichen Schema: Beschreibung eines Ausgangskontexts, Beschreibung eines Ereignisses, Beschreibung des erwarteten Ergebnisses.

Als nächstes lernen wir, wie man Feature-Dateien schreibt in Cucumber mit Beispiel.

Beispiel für eine Feature-Datei:

Das Originalbeispiel, das zusammen mit diesem Tutorial veröffentlicht wurde, ist unten genau so wiedergegeben, wie es geschrieben steht.

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

⚠️ Korrektur: Im obigen Beispiel wird nach dem Doppelpunkt ein Doppelpunkt eingefügt. Gegeben, Wenn die Funktion und DannGherkin setzt einen Doppelpunkt nach Funktion und Szenario Ein Schritt-Schlüsselwort gefolgt von einem Doppelpunkt wird nicht als Schritt interpretiert. Cucumber Die Zeile wird stillschweigend ignoriert. Die korrigierte Datei sieht wie folgt aus.

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

Einrückungen sind für den Parser nicht erforderlich, jedoch ist die Verwendung von zwei Leerzeichen pro Ebene üblich und erleichtert das Lesen längerer Features erheblich. Die folgende Animation zeigt die Verarbeitung einer Feature-Datei; jeder abgeschlossene Schritt wird grün markiert.

Animation eines Cucumber Die Feature-Datei wird bei jedem Gherkin-Schritt ausgeführt und protokolliert.

Was ist „Schrittdefinition“?

Die Schrittdefinition ordnet die Testfallschritte in den Feature-Dateien (eingeführt durch Given/When/Then) dem Code zu. Es führt die Schritte für die zu testende Anwendung aus und vergleicht die Ergebnisse mit den erwarteten Ergebnissen. Damit eine Schrittdefinition ausgeführt werden kann, muss sie mit der angegebenen Komponente in einem Feature übereinstimmen. Die Schrittdefinition wird in Ruby-Dateien unter „features/step_definitions/*_steps.rb“ definiert.

Die Übereinstimmung wird allein anhand des Textes des Spielschritts hergestellt. Cucumber berücksichtigt das Schlüsselwort nicht bei der Suche nach einer Definition. Deshalb können zwei Schritte in derselben Anweisungsfolge niemals identischen Text enthalten, selbst wenn der eine ein Given-Schritt und der andere ein Then-Schritt ist.

Beispiel für Schrittdefinition: Hier verwenden wir oben Cucumber Beispiel einer Feature-Datei zum Durchsuchen von career.guru99.com. Wir verwenden Features wie „Wenn, Dann, Gegeben“, wie unten dargestellt. Cucumber Beispiele für Featuredateien.

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

⚠️ Ein Hinweis zu den Sprachen: Die obigen Definitionen beziehen sich auf Ruby, wo Cucumber begann damit, und deshalb heißt der Ordner so. step_definitions und die Dateien enden in _steps.rbDieselbe Feature-Datei steuert Schrittdefinitionen, die in geschrieben sind Java, JavaSkript, Python oder C# ohne eine einzige Änderung am Gherkin. In Cucumber-JVM: Der reguläre Ausdruck wird in eine Annotation einer Methode verschoben:

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

Unabhängig von der gewählten Sprache gehören Implementierungsdetails ausschließlich in die Schrittdefinition. Keeping Selektoren und HTTP-Aufrufe aus der Feature-Datei ermöglichen es auch Nicht-Programmierern, das Szenario zu lesen. zuerst Cucumber Skript Die Komplettlösung baut diese Paarung von Anfang bis Ende auf.

Szenarioübersicht und Beispiele in einer Feature-Datei

Das dreimalige Kopieren eines Szenarios, um einen einzigen Wert zu ändern, ist die häufigste Ursache dafür, dass eine Feature-Datei unlesbar wird. Szenario-Übersicht ersetzt die Kopien durch eine Vorlage und eine Beispiele Die Tabelle liefert die Werte.

Die Parameter werden in spitzen Klammern angegeben und müssen mit einer Spaltenüberschrift in der darunter stehenden Tabelle übereinstimmen. Cucumber Die Werte werden ersetzt, bevor nach einer passenden Schrittdefinition gesucht wird, sodass die Definitionen selbst keiner Sonderbehandlung bedürfen.

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  |

Bei der Verwendung von Gliederungen sollten einige Punkte beachtet werden:

  • Die Gliederung wird einmal pro Datenzeile ausgeführt. Die erste Zeile ist die Kopfzeile und wird nie ausgeführt.
  • Auf eine Szenario-Gliederung muss mindestens ein Abschnitt mit Beispielen folgen, sonst funktioniert nichts.
  • Die Tabellenstriche müssen nicht exakt ausgerichtet sein, obwohl eine Ausrichtung die Lesbarkeit der Datei gewährleistet.
  • Halten Sie die Tabelle klein. Eine Tabelle mit dreißig Zeilen ist in der Regel ein Zeichen dafür, dass die Daten in eine kleinere Tabelle gehören. datengesteuerter Test stattdessen.

Hintergrund, Und, Aber und die anderen Gurken-Schlüsselwörter

Neben den sechs zuvor genannten Komponenten verfügt Gherkin über eine Handvoll Schlüsselwörter, die dafür sorgen, dass auch längere Feature-Dateien lesbar bleiben.

  • Hintergrund — ein Block von Given-Schritten, der vor jedem Szenario im Feature ausgeführt wird. Dadurch entfällt die Wiederholung, dieselbe Vorbedingung am Anfang jedes Szenarios zu schreiben.
  • Und und Doch — Ersatz für wiederholte Given-, When- oder Then-Anweisungen. Sie lesen sich besser und verhalten sich identisch; Cucumber Die Übereinstimmungen im Schritttext sind in beiden Fällen gegeben.
  • Regel — eine optionale Gruppeping, hinzugefügt in Gherkin 6, das die Szenarien sammelt, die eine Geschäftsregel veranschaulichen.
  • Doc Strings — ein von drei doppelten Anführungszeichen umschlossener Textblock, der der Schrittdefinition als einzelnes Argument übergeben wird, wenn eine Zeile nicht ausreicht.
  • Datentabellen — durch Pipe-Zeichen getrennte Zeilen, die einem einzelnen Schritt zugeordnet sind und dazu dienen, diesem Schritt eine Liste von Werten zu übergeben.
  • Schlüsselwörter — Beschriftungen, die mit einem @-Zeichen beginnen und über einem Feature oder Szenario platziert sind, damit zur Laufzeit eine Teilmenge ausgewählt werden kann.
  • Kommentare — eine Zeile, die mit einem Rautezeichen beginnt. Kommentare sind nur am Zeilenanfang erlaubt, und Gherkin unterstützt keine Blockkommentare.

Zusammengesetzt sieht eine Feature-Datei mit gemeinsam genutztem Setup folgendermaßen aus:

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

Häufige Fehler in Feature-Dateien und wie man sie behebt

Most Cucumber Die von Anfängern gemeldeten Probleme sind keine Fehler des Frameworks. Es handelt sich um kleine Verstöße gegen die Gherkin-Regeln, die unbemerkt bleiben.

Fehler Was ist loss Fixieren
Doppelpunkt nach Given, When oder Then Die Zeile wird nicht als Schritt erkannt und übersprungen. Verwenden Sie nach Feature und Scenario nur einen Doppelpunkt.
Zwei Schritte mit identischem Text Cucumber behandelt sie als Duplikate, weil das Schlüsselwort ignoriert wird. Formuliere einen Schritt so um, dass die beiden Schritte sich unterschiedlich lesen.
Feature-Datei außerhalb des Features-Verzeichnisses Die Datei wird nie gefunden und es werden keine Testläufe durchgeführt. Bewahren Sie alle .feature Datei im Ordner „Features“
Fünfzehn Schritte in einem Szenario Das Szenario funktioniert nicht mehr als Dokumentation Streben Sie drei bis fünf Schritte an und gehen Sie bei der Schrittdefinition detailliert vor.
Anschließend wird eine Aussage über eine Datenbankzeile getroffen. Der Test wird bestanden, obwohl das für den Benutzer sichtbare Verhalten fehlerhaft ist. Überprüfen Sie beobachtbare Ausgaben wie die Seite oder die Antwort.
Szenario-Übersicht ohne Beispieltabelle Die Vorlage wird nie ausgeführt. Fügen Sie direkt unterhalb der Gliederung einen Abschnitt „Beispiele“ hinzu.

Diese Fehler zu beheben, bevor die Suite wächst, ist deutlich günstiger als sie im Nachhinein zu beheben, da jedes in der Zwischenzeit geschriebene Szenario dieselbe Struktur aufweist. Sobald die Feature-Dateien funktionieren, besteht der nächste Schritt darin, das Projekt zu verknüpfen – siehe … Cucumber Rundgang und die umfassendere Automatisierungstests .

Häufig gestellte Fragen

Nein. Eine .feature-Datei kann genau ein Feature deklarieren, obwohl sie beliebig viele Szenarien enthalten kann. Benötigen Sie ein zweites Feature, erstellen Sie eine zweite Datei – diese Beschränkung sorgt dafür, dass der Ordner auch bei wachsenden Suite-Anzahlen übersichtlich bleibt.

Nein. Gherkin ist in über siebzig gesprochene Sprachen lokalisiert. Durch Hinzufügen eines Sprachheaders in der ersten Zeile der Datei werden die Schlüsselwörter ausgetauscht, sodass ein Team Szenarien in der Sprache verfassen kann, die seine Fachexperten tatsächlich sprechen.

Es enthält alles, was keine Schrittdefinition ist: Umgebungseinrichtung, Browserkonfiguration, Hooks, die vor oder nach einem Szenario ausgeführt werden, und gemeinsam genutzten Hilfscode. Keeping Es trennt die Schrittdefinitionsdateien, sodass sie nicht in einen Dummkopf umgewandelt werden.ping Boden.

Cucumber Der Schritt wird als undefiniert anstatt als fehlgeschlagen gemeldet und ein Code-Vorschlag ausgegeben, den Sie in eine Schrittdefinitionsdatei einfügen können. Das Szenario wird als nicht bestanden markiert, sodass ein undefinierter Schritt niemals stillschweigend als Erfolg gewertet wird.

Ein Tag über einem Feature oder Szenario ermöglicht es dem Runner, zur Ausführungszeit unabhängig von der Ordnerstruktur eine Teilmenge auszuwählen. Teams kennzeichnen üblicherweise ein Smoke-Set, ein Slow-Set und ein Work-in-Progress-Set und führen dann nur das aus, was die jeweilige Pipeline-Phase benötigt.

Große Sprachmodelle erstellen Gherkin-Konstrukte anhand eines Akzeptanzkriteriums gut und generieren die passenden Definitionsskelette noch schneller. RevÜberprüfen Sie die Ausgabe auf doppelten Schritttext und auf Szenarien, die Implementierungsdetails durchsickern lassen, denn hier liegt normalerweise der Fehler im generierten Gherkin.

Sehr genau. Copilot leitet aus einer geöffneten Feature-Datei den regulären Ausdruck und die Methodensignatur für einen undefinierten Schritt ab und füllt den Codeblock anhand des umgebenden Codes aus. Betrachten Sie dies als ersten Entwurf; die vorgeschlagenen Zusicherungen müssen noch manuell überprüft werden.

Ja, und genau das ist der Sinn des Designs. Definitionen befinden sich in einem gemeinsamen Ordner und werden anhand des Textes, nicht anhand der Datei, zugeordnet. So kann ein einmal erstellter Anmeldeschritt von jeder Funktion wiederverwendet werden, die ihn benötigt. Aus diesem Grund ist die Duplikation von Schritttexten verboten.

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: