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 .

