Cucumber-js: Wie verwende ich das Tag in meinem Funktionsszenario Cucumber.js?

Erstellt am 8. Dez. 2015  ·  5Kommentare  ·  Quelle: cucumber/cucumber-js

Hallo,

Wie erkenne ich das Szenario, das meine Funktion aufruft? Wie verwende ich die Tags in meinem Funktionsszenario?

Eigentlich habe ich ein Szenario:

Feature: create module feature
  As a admin
  I want to use create module

  <strong i="8">@createModule</strong>
  Given I am logged as 'ADMIN'
    And I am on "/admin/create"
   Then The "book_id" field should be empty

Ich möchte mein Tag @createModule in meiner Funktion verwenden Dann:

this.Then(/^The "?([^"]*)"? field should be empty$/, function (el) {

    if (myModule === @createModule) {
        ...
    } else if {
        ...
    }

    return main_po.checkIsEmptyElement(this, el);
});

Ich möchte mein Tag @createModule erhalten , um das aufgerufene Szenario anzugeben, oder eine andere Alternative. Ich möchte wissen, welche Szenarien meine Funktion aufrufen.

Hilfreichster Kommentar

Gelöst:

Ich fügte hinzu :

this.Before(function (scenario, callback) {
    var tags = scenario.getTags();

    this.current_module = tags[0].getName();

    callback();
});

und meine Funktion:

this.Then(/^The "?([^"]*)"? field should be empty$/, function (el) {

    if (this.current_module === @createModule) {
        ...
    } else if {
        ...
    }

    return main_po.checkIsEmptyElement(this, el);
});

Alle 5 Kommentare

Tags werden verwendet, um auszuwählen, welche Szenarien beim Ausführen von cucumber-js ausgeführt werden sollen (siehe README). Derzeit haben Schritte keine Möglichkeit zu sagen, für welches Szenario sie gerade ausgeführt werden. Alle Schritte unter einem Szenario teilen sich eine Weltinstanz (Zugriff über this in der Schrittdefinition).

Gelöst:

Ich fügte hinzu :

this.Before(function (scenario, callback) {
    var tags = scenario.getTags();

    this.current_module = tags[0].getName();

    callback();
});

und meine Funktion:

this.Then(/^The "?([^"]*)"? field should be empty$/, function (el) {

    if (this.current_module === @createModule) {
        ...
    } else if {
        ...
    }

    return main_po.checkIsEmptyElement(this, el);
});

@jechazelle Danke für das Posten deiner Lösung. Ich brauche die gleiche Funktionalität für einen anderen Anwendungsfall :)

In cucumber-js 3.2.1 I zu verwenden

Before({timeout: 20000}, async function(testCase) {
  this.tags = testCase.pickle.tags.map((tag) => tag.name);`
  ...
}

Der Grund, warum ich es verwende, ist, dass eine bestimmte Schrittimplementierung für eine bekannte Teilmenge von Szenarien fehlschlägt. Daher habe ich in unserem Nachverfolgungssystem ein nicht kritische Fehlerticket erstellt, die fehlgeschlagenen Szenarien mit der Ticketnummer gekennzeichnet und dann Logik hinzugefügt in der Step-Implementierung, um 'pending' zurückzugeben, wenn this.tags die Ticketnummer enthält.

Dadurch kann unser Build wieder grün werden, während die zuständigen Kräfte entscheiden, ob sie den Fehler beheben möchten oder nicht.

Dieser Thread wurde automatisch gesperrt, da es nach seiner Schließung keine Aktivitäten mehr gegeben hat. Bitte öffnen Sie ein neues Problem für verwandte Fehler.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen