Gurke - Tags

Es sieht einfach aus, wenn wir nur ein, zwei oder vielleicht fünf Szenarien in einer Feature-Datei haben. Im wirklichen Leben passiert dies jedoch nicht. Für jedes getestete Feature haben wir möglicherweise 10, 20 oder mehr Szenarien in einer einzelnen Feature-Datei. Sie können unterschiedliche Zwecke (Rauchtest / Regressionstest), unterschiedliche Perspektiven (Entwickler / QA / BA), unterschiedliche Status (Ausführungsbereit / In Arbeit) usw. darstellen. Wie wird die Ausführung für eine solche Masse verwaltet?

Zu diesem Zweck hat Cucumber bereits eine Möglichkeit bereitgestellt, die Ausführung Ihres Szenarios mithilfe von Tags in der Feature-Datei zu organisieren. Wir können jedes Szenario mit einem nützlichen Tag definieren. Später können wir in der Runner-Datei entscheiden, welches bestimmte Tag (und damit auch welche Szenarien) Cucumber ausführen soll. Tag beginnt mit "@". Nach "@" können Sie einen beliebigen relevanten Text haben, um Ihr Tag zu definieren. Lassen Sie uns dies anhand eines Beispiels verstehen.

Angenommen, eine Feature-Datei enthält zwei oder mehr Szenarien. Wir wollen im Rahmen des Rauchtests nur ein Szenario ausführen. Das erste ist, dieses Szenario zu identifizieren und das zweite, es am Anfang des Szenarios mit dem Text „@SmokeTest“ zu kennzeichnen. Werfen wir einen tiefen Blick darauf -

Step 1 - Erstellen Sie ein Maven-Projekt mit dem Namen cucumberTag.

Step 2- Erstellen Sie ein Paket mit dem Namen cucumberTag unter src/test/java

Step 3- Erstellen Sie eine Feature-Datei mit dem Namen cucumberTag.feature.

Schreiben Sie den folgenden Text in die Datei und speichern Sie ihn. Diese Feature-Datei enthält zwei Szenarien, in denen nur eines als markiert wurdeSmokeTest Etikett.

Feature - Gurkenanhänger

Scenario Outline - Anmeldefunktion für eine Social-Networking-Site.

Der angegebene Benutzer navigiert zu Facebook

Wenn ich den Benutzernamen als "<Benutzername>" und das Passwort als "<Kennwort>" eingebe

Dann sollte die Anmeldung nicht erfolgreich sein

Beispiele

| username  | password  | 
| username1 | password1 | 
| username2 | password2 |

Das folgende Szenario wurde als SmokeTest markiert und sollte ausgeführt werden. @Rauchtest

Scenario:

Der angegebene Benutzer navigiert zu Facebook

Wenn ich den Benutzernamen als "<>" und das Passwort als "<>" eingebe

Dann sollte der Benutzer zur erneuten Anmeldung weitergeleitet werden

Step 4 - Erstellen Sie eine Schrittdefinitionsdatei.

  • Wählen Sie die Paketskizze aus und klicken Sie mit der rechten Maustaste darauf.

  • Klicken Sie auf "Neu".

  • Geben Sie der Datei einen Namen wie cucumberTag.java

  • Schreiben Sie den folgenden Text in die Datei und speichern Sie ihn.

package cucumberTag;
 
import org.openqa.selenium.By; 
import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.firefox.FirefoxDriver; 

import cucumber.annotation.en.Given; 
import cucumber.annotation.en.Then; 
import cucumber.annotation.en.When; 

public class cucumberTag { 
   WebDriver driver = null; 
	
   @Given("^user navigates to facebook$") 
   public void goToFacebook() { 
      driver = new FirefoxDriver(); 
      driver.navigate().to("https://www.facebook.com/"); 
   } 
	
   @When("^I enter Username as \"([^\"]*)\" and Password as \"([^\"]*)\"$") 
   public void I_enter_Username_as_and_Password_as(String arg1, String arg2) {
      driver.findElement(By.id("email")).sendKeys(arg1);
      driver.findElement(By.id("pass")).sendKeys(arg2);
      driver.findElement(By.id("u_0_v")).click(); 
   } 
	
   @Then("^login should be unsuccessful$") 
   public void validateRelogin() { 
      if(driver.getCurrentUrl().equalsIgnoreCase(
         "https://www.facebook.com/login.php?login_attempt=1&lwv=110")){ 
            System.out.println("Test Pass"); 
      } else { 
         System.out.println("Test Failed"); 
      }
      driver.close(); 
   } 
	
   @Then("^User should be redirected to login retry$") 
   public void loginRetry() { 
      if(driver.getCurrentUrl().equalsIgnoreCase(
         "https://www.facebook.com/login.php?login_attempt=1&lwv=110")){ 
            System.out.println("Test Pass"); 
      } else { 
         System.out.println("Test Failed"); 
      } 
      driver.close(); 
   } 
}

Step 5 - Erstellen Sie eine Runner-Klassendatei.

  • Erstellen Sie eine Runner-Klasse mit dem Namen runTest.java in der Verpackung.

  • Schreiben Sie den folgenden Code.

  • Speicher die Datei.

package cucumberTag;
 
import org.junit.runner.RunWith; 
import cucumber.junit.Cucumber; 

@RunWith(Cucumber.class) 
@Cucumber.Options(format = {"pretty", "html:target/cucumber"}) 

public class runTest { }
  • Führen Sie die Testoption aus.

  • Klicken Sie mit der rechten Maustaste und wählen Sie die Option ‘Run as’.

  • Wählen Sie JUnit-Test.

Sie werden die folgenden Dinge beachten, wenn Sie diese Klassendatei ausführen.

  • Facebook wird in einer neuen Firefox-Webbrowser-Instanz geöffnet.

  • Der Benutzername und das Passwortfeld werden nicht mit einem Wert versehen.

  • Login wird angeklickt.

  • Die Anmeldeseite wird erneut geladen.

Die Definition von Tags in der Feature-Datei ist unbegrenzt. Je nach Bedarf können Sie zu verwendende Tags und auszuführende Szenarien ableiten.

Es gibt hauptsächlich zwei Arten von Tags -

  • Default tag- Das Standard-Tag hat seine vordefinierte Bedeutung. Beispiel @ Dev, @ Ignorieren

  • Custom tag - Benutzerdefiniertes Tag bietet Ihnen volle Flexibilität bei der Auswahl des geeigneten Textes für die Definition Ihres Tags.

Tag kann auch auf Funktionsebene definiert werden. Sobald Sie ein Tag auf Feature-Ebene definiert haben, wird sichergestellt, dass alle Szenarien in dieser Feature-Datei dieses Tag erben. Abhängig von der Art des Szenarios können wir mehr als ein Tag für das einzelne Feature verwenden. Immer wenn Cucumber einen geeigneten Aufruf findet, wird ein bestimmtes Szenario ausgeführt.

Gurke bietet auch eine Möglichkeit, die Auswahl der Tags umzukehren. Beachten Sie, dass von 25 definierten Szenarien 10 als Rauchtest markiert sind. Wir müssen nur Regressionstestszenarien ausführen.

Dazu können wir in der JUnit-Runner-Klasse „~“ verwenden, um ein Rauchtestszenario auszuschließen. Es wird wie folgt aussehen.

@RunWith(Cucumber.class) 
@Cucumber.Options(format = {"pretty", "html:target/cucumber"}, tags = {"~@SmokeTest"}) 

public class runTest { }

Während wir mehrere Tags definieren, können wir auch logische oder / und logische und Operationen definieren.

  • Logisch definieren oder in Läuferklasse - @dev,@wip - Es heißt, dass Szenarien ausgeführt werden müssen, die mit einem dieser Tags übereinstimmen.

  • Logisch definieren oder in Läuferklasse - [@dev,~@wip] − Es heißt, dass Szenarien, die diesen beiden Tags entsprechen, ausgeführt werden müssen.