Mentimun - Pengait

Timun hookmemungkinkan kami untuk mengelola alur kerja kode dengan lebih baik dan membantu kami mengurangi redundansi kode. Kami dapat mengatakan bahwa ini adalah langkah yang tidak terlihat, yang memungkinkan kami untuk melakukan skenario atau pengujian kami.

Untuk memahami gagasan ini lebih baik, mari kita ambil contoh file fitur dan file definisi langkah.

Bagian yang disorot dalam pernyataan yang diberikan sebenarnya melakukan tugas menyiapkan webdriver dan mengakhiri sesi webdriver. Jadi, ini sebenarnya tidak relevan dengan esensi dari "Pernyataan yang diberikan", dan ini lebih seperti penyiapan untuk pengujian. Juga jika kita berpikir dengan prospek yang lebih luas, maka dalam kasus beberapa skenario untuk fitur ini, penyiapan dan pembersihan webdriver ini akan berjalan dengan setiap pernyataan yang diberikan. Secara logis, masuk akal jika penyiapan dan pembersihan dijalankan hanya sekali.

Jadi untuk menghadirkan pengoptimalan, pengait bisa dimanfaatkan. Lebih sering kita menggunakan dua jenis pengait: Pengait "Sebelum" dan Pengait "Setelah". Metode / fungsi / potongan kode, yang didefinisikan dalam kait Sebelum dan Setelah, selalu dijalankan, bahkan jika skenario berhasil atau gagal.

Seperti namanya, sebelum hook dijalankan dengan baik sebelum skenario pengujian lainnya, dan setelah hook dieksekusi setelah menjalankan semua skenario.

Hooks didefinisikan dalam file definisi langkah saja.

Mari mengotomatiskan contoh sebelum dan sesudah pengait.

Step 1 - Buat proyek Maven sebagai hookTest, tambahkan dependensi yang diperlukan di pom.xml.

Step 2 - Buat paket Java dengan nama hookTest di bawah src/test/java

Step 3 - Buat file definisi langkah dengan nama hookTest.java di bawah 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 - Buat file fitur bernama "hookTest.feature" di bawah paket.

Feature - Skenario Outline.

Scenario Outline - Uji Hook

Pengguna tertentu menavigasi ke Facebook

Ketika saya memasukkan Nama Pengguna sebagai "<username>" dan Kata Sandi sebagai "<password>"

Maka login seharusnya tidak berhasil

Contoh

| username  | password  | 
| username1 | password1 |

Step 5 - Buat file kelas runner.

  • Buat kelas runner sebagai runTest.java di dalam paket dataTable (lihat garis besar skenario bagian untuk langkah-langkah yang lebih detail).

  • Tulis kode berikut.

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

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

  • Jalankan tes menggunakan opsi -

    • Pilih file runTest.java dari penjelajah paket.

    • Klik kanan dan pilih opsi, Jalankan sebagai.

    • Pilih uji JUnit.

Jadi sekarang ketika kita menjalankan ini, berikut akan menjadi urutan eksekusi.

  • Sebelum pengait - Siapkan webdriver dan prasyarat lainnya untuk menjalankan pengujian.

  • Pernyataan yang diberikan

  • Saat pernyataan

  • Kemudian pernyataan

  • After hook - Tutup webdriver dan lakukan proses pembersihan.

Tagged Hooks

Kita juga dapat menunjukkan jika kita ingin sebelum dan sesudah hook dijalankan dengan tag tertentu saja. Example- @Before ('@ Web'). Konsep tag yang logis dan / atau dapat diterapkan dengan kait juga.Example - @Before (@ dev, @ wip), @Before (@ dev, ~ @ wip)