Gurkenhaken

Gurke hookermöglicht es uns, den Code-Workflow besser zu verwalten und die Code-Redundanz zu reduzieren. Wir können sagen, dass es ein unsichtbarer Schritt ist, der es uns ermöglicht, unsere Szenarien oder Tests durchzuführen.

Um diesen Begriff besser zu verstehen, nehmen wir ein Beispiel für eine Feature-Datei und eine Schrittdefinitionsdatei.

Der hervorgehobene Teil in der angegebenen Anweisung übernimmt tatsächlich das Einrichten des Webdrivers und das Beenden der Webdriver-Sitzung. Es ist also eigentlich nicht relevant für das Wesen der „gegebenen Aussage“, und es ist eher ein Setup für den Test. Auch wenn wir mit einer breiteren Perspektive denken, wird bei mehreren Szenarien für diese Funktion dieses Webdriver-Setup und die Bereinigung mit jeder gegebenen Anweisung ausgeführt. Logischerweise ist es sinnvoll, das Setup und die Bereinigung nur einmal auszuführen.

Um eine Optimierung zu erreichen, können Haken verwendet werden. Häufiger verwenden wir zwei Arten von Haken: "Vorher" -Haken und "Nachher" -Haken. Methode / Funktion / Code, die in Before- und After-Hooks definiert sind, werden immer ausgeführt, auch wenn das Szenario bestanden oder fehlgeschlagen ist.

Wie der Name schon sagt, wird der Hook lange vor allen anderen Testszenarien und nach dem Hook ausgeführt, nachdem alle Szenarien ausgeführt wurden.

Hooks werden nur in der Schrittdefinitionsdatei definiert.

Lassen Sie uns ein Beispiel für vor und nach dem Hook automatisieren.

Step 1 - Erstellen Sie ein Maven-Projekt als hookTest und fügen Sie die erforderliche Abhängigkeit in pom.xml hinzu.

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

Step 3 - Erstellen Sie eine Schrittdefinitionsdatei mit dem Namen hookTest.java unter dem Paket.

package hookTest; 

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 hookTest {
   WebDriver driver = null; 
	
   @Before public void setUp(){ 
      driver = new FirefoxDriver(); 
   } 
	
   @Given("^user navigates to facebook$") 
   public void goToFacebook() { 
      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(); 
   } 
	
   @After public void cleanUp(){ 
      driver.close(); 
   } 
}

Step 4 - Erstellen Sie unter dem Paket eine Feature-Datei mit dem Namen "hookTest.feature".

Feature - Szenarioübersicht.

Scenario Outline - Hakentest

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 |

Step 5 - Erstellen Sie eine Runner-Klassendatei.

  • Erstellen Sie die Runner-Klasse als runTest.java in der Paket-Datentabelle (weitere Schritte finden Sie in der Übersicht über das Szenario).

  • Schreiben Sie den folgenden Code.

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

@RunWith(Cucumber.class) 
@Cucumber.Options(format = {"pretty", "html:target/cucumber"}) 
 
public class runTest { }
  • Speicher die Datei.

  • Führen Sie den Test mit der Option - aus.

    • Wählen Sie im Paket-Explorer die Datei runTest.java aus.

    • Klicken Sie mit der rechten Maustaste und wählen Sie die Option Ausführen als.

    • Wählen Sie JUnit-Test.

Wenn wir dies ausführen, folgt die folgende Reihenfolge der Ausführung.

  • Vor dem Hook - Richten Sie den Webdriver und andere Voraussetzungen ein, um den Test auszuführen.

  • Gegebene Aussage

  • Wann-Anweisung

  • Dann Aussage

  • Nach dem Hook - Schließen Sie den Webdriver und führen Sie den Bereinigungsvorgang durch.

Tagged Hooks

Wir können auch angeben, ob vor und nach Hooks nur mit einem bestimmten Tag ausgeführt werden soll. Example- @Before ('@ Web'). Das gleiche Konzept des logischen Tags und / oder kann auch mit Hooks angewendet werden.Example - @Before (@ dev, @ wip), @Before (@ dev, ~ @ wip)