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.

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.
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 .

