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: