1

Ich lerne Gurke durch einige Tutorials und es gibt etwas, dass ich nicht weiß, wie zu tun .. Ich muss ein Szenario machen, das davon abhängt ein anderes Szenario (z. B. Abmeldeszenario Ich muss zuerst angemeldet sein, bevor ich mich abmelde). Was soll ich tun? sollte ich Schritte zum Anmelden bei Abmeldungsszenario (in der Feature-Datei) schreiben oder gibt es eine Möglichkeit, das gesamte Anmeldungsszenario beim Abmeldeszenario aufzurufenWie man ein Szenario macht, das von einem anderen Szenario mit Gurke, Selen und Java abhängt

Ich muss auch wissen, ob ich Treiber vor jedem Szenario einrichten soll und den Fahrer nach jedem Szenario verlassen?

+0

Wenn Sie suchen nach einer Lösung ohne Öffnen und Schließen Treiber für jedes Szenario Blick auf diese - https://github.com/cucumber/cucumber-jvm/blob/master/examples/java-webbit-websockets-selenium/ src/test/java/gurke/beispiele/java/websockets/SharedDriver.java – Grasshopper

Antwort

0

Werfen Sie einen Blick auf Gurkenhaken, damit Sie globale "Vorher" - und "Nachher" -Schritte einrichten können, die für jedes Szenario ausgeführt werden, ohne sie in Ihren Feature-Dateien angeben zu müssen.

Da sie für jedes Szenario ausgeführt werden, sind sie ideal für die Initialisierung des Treibers zu Beginn eines jeden Tests. Es kann für die Ausführung Ihrer Anmeldung geeignet sein, aber wenn es eine Chance gibt, dass Sie ein Szenario haben, das keine Anmeldung erfordert, dann wäre das nicht der Weg zu gehen (Alternative weiter unten). Gleiches gilt für das after-Szenario, in dem Sie sich abmelden und den Treiber herunterfahren können. Als Beispiel:

/** 
* Before each scenario, initialise webDriver. 
*/ 
@Before 
public void beforeScenario() { 
    this.application.initialiseWebDriver(); 
} 

/** 
* After each scenario, quit the web driver. 
*/ 
@After 
public void afterScenario() { 
    this.log.trace("afterScenario"); 
     this.application.quitBrowser(); 
    } 

In meinem Beispiel habe ich einfach den Treiber in dem vor Szenario starten, und es in dem nach dem Schließen, aber in der Theorie dieser vor und nach Methoden alles enthalten könnten, müssen Sie nur haben Sie sie in Ihrer Step-Definition-Klasse und kommentieren Sie sie mit den Tags @Before und @After wie gezeigt.

Sie können auch mehrere Vorher- und Nachher-Tags haben, die Sie durch Markieren des Szenarios aufrufen können. Als Beispiel:

/** 
* Something to do after certain scenarios. 
*/ 
@After("@doAfterMethod") 
public void afterMethod() { 
    this.application.afterThing(); 
} 

Sie können es nicht laufen so etwas wie dies in Ihrem Schritt defs und als Standard eingerichtet. Sie können Ihr Szenario jedoch mit "@doAfterMethod" taggen und es wird für die getaggten Szenarien ausgeführt, was dies für ein häufiges Szenario, das Sie am Ende von Tests benötigen, aber nicht für alle, sinnvoll ist. Das gleiche würde für Methoden funktionieren, die vor einem Szenario ausgeführt werden, ändern Sie einfach '@After' zu '@Before'.

Denken Sie daran, dass, wenn Sie diese verwenden, das globale Vorher und Nachher (also in diesem Beispiel die Treiberinitialisierung und das Beenden) immer die ersten und letzten Dinge sein werden, mit anderen Vorher/Nachher dazwischen und das Szenario.

Weiterführende Literatur: https://github.com/cucumber/cucumber/wiki/Hooks https://zsoltfabok.com/blog/2012/09/cucumber-jvm-hooks/

0

Sie können Test Abhängigkeit mit qaf bdd eingestellt. Sie können dependsOnMethods oder dependsOnGroups in Szenario-Metadaten verwenden, um die Abhängigkeit wie in TestNG festzulegen, da qaf-BDD die TestNG BDD-Implementierung ist.

1

Es gibt keine Unterstützung für das Erstellen eines Szenarios, das von einem anderen Szenario in Gurke-JVM abhängt. Ich denke, immer noch wird in der Ruby-Implementierung in Cucumber unterstützt. Es ist jedoch eine Praxis, die gefährlich ist. Die Unterstützung für den Aufruf eines Szenarios aus einem anderen Szenario wird in zukünftigen Versionen von Cucumber nicht unterstützt.

Wie gesagt, wie lösen Sie Ihr Problem, wenn Sie Funktionalität wiederverwenden möchten? Sie erwähnen Abmeldung, wie gehen Sie damit um, wenn in vielen Szenarien der Status für einen Benutzer abgemeldet werden muss? Die Lösung besteht darin, die Funktionalität in einer Hilfsmethode oder Hilfsklasse zu implementieren, die für jeden Schritt, bei dem ein Benutzer abgemeldet werden muss, erforderlich ist.

Dadurch kann jedes Szenario von allen anderen Szenarien unabhängig sein. Dadurch können Sie die Szenarien in zufälliger Reihenfolge ausführen. Ich denke nicht, dass die Ausführungsreihenfolge für die Szenarien garantiert ist. Ich weiß auf jeden Fall, dass diskutiert wird, dass der JUnit-Runner Szenarien in zufälliger Reihenfolge ausführen soll, um die Angewohnheit zu erzwingen, Szenarien nicht von anderen Szenarien abhängig zu machen.

Ihre andere Frage, wie man WebDriver vor einem Szenario einrichtet und wie man es abreißt, wird mit Hilfe der Häkchen Before und After in Cucumber gelöst. Achten Sie bei der Verwendung darauf, dass Sie die JUnit-Version von Before und After nicht importieren.

Verwandte Themen