Mentimun - Tag

Ini terlihat sederhana ketika kita hanya memiliki satu, dua, atau mungkin lima skenario dalam file fitur. Namun, dalam kehidupan nyata hal itu tidak terjadi. Untuk setiap fitur yang diuji, kami mungkin memiliki 10, 20, atau mungkin lebih banyak skenario dalam satu file fitur. Mereka mungkin mewakili tujuan yang berbeda (Uji asap / uji Regresi), prospek berbeda (Pengembang / QA / BA), status berbeda (Siap untuk dieksekusi / Pekerjaan dalam proses), dll. Bagaimana mengelola eksekusi untuk massa seperti itu?

Untuk ini, Mentimun telah menyediakan cara untuk mengatur eksekusi skenario Anda dengan menggunakan tag di file fitur. Kita dapat menentukan setiap skenario dengan tag yang berguna. Nanti, di file runner, kita dapat memutuskan tag spesifik mana (dan juga skenario) yang kita inginkan untuk dieksekusi oleh Cucumber. Tag dimulai dengan "@". Setelah "@" Anda dapat memiliki teks yang relevan untuk menentukan tag Anda. Mari kita pahami ini dengan sebuah contoh.

Misalkan, ada dua atau lebih skenario dalam file fitur. Kami hanya ingin menjalankan satu skenario sebagai bagian dari uji asap. Jadi, hal pertama adalah mengidentifikasi skenario itu dan yang kedua adalah menandainya dengan teks "@SmokeTest" di awal skenario. Mari kita lihat lebih dalam -

Step 1 - Buat proyek Maven dengan nama cucumberTag.

Step 2- Buat paket bernama cucumberTag dibawah src/test/java

Step 3- Buat file fitur bernama cucumberTag.feature.

Tulis teks berikut di dalam file dan simpan. File fitur ini berisi dua skenario di mana hanya satu yang telah ditandai sebagaiSmokeTest menandai.

Feature - Mentimun Tag

Scenario Outline - Fungsi Login untuk situs jejaring sosial.

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 | 
| username2 | password2 |

Skenario #following telah diberi tag sebagai SmokeTest dan ini harus dijalankan. @Tokopedia

Scenario:

Pengguna tertentu menavigasi ke Facebook

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

Kemudian pengguna harus diarahkan untuk login lagi

Step 4 - Buat file definisi langkah.

  • Pilih dan klik kanan pada garis besar paket.

  • Klik pada file 'Baru'.

  • Beri nama file seperti cucumberTag.java

  • Tulis teks berikut di dalam file dan simpan.

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 - Buat file kelas runner.

  • Buat kelas pelari bernama runTest.java di dalam paket.

  • Tulis kode berikut.

  • Simpan file.

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

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

public class runTest { }
  • Jalankan opsi uji.

  • Klik kanan dan pilih opsi ‘Run as’.

  • Pilih uji JUnit.

Anda akan mengamati hal-hal berikut, ketika Anda menjalankan file kelas ini.

  • Facebook terbuka di browser web Firefox baru.

  • Tidak ada nilai yang akan diberikan ke bidang nama pengguna dan kata sandi.

  • Login akan diklik.

  • Halaman coba lagi login akan dimuat.

Tidak ada batasan dalam menentukan tag dalam file fitur. Berdasarkan kebutuhan Anda, Anda dapat memperoleh tag untuk digunakan dan skenario untuk dieksekusi.

Terutama ada dua jenis tag -

  • Default tag- Tag default memiliki arti yang telah ditentukan sebelumnya. Contoh @ Dev, @ Abaikan

  • Custom tag - Tag khusus memberi Anda fleksibilitas penuh untuk memilih teks yang sesuai untuk menentukan tag Anda.

Tag juga dapat ditentukan di tingkat fitur. Setelah Anda menentukan tag di tingkat fitur, ini memastikan bahwa semua skenario dalam file fitur tersebut mewarisi tag tersebut. Bergantung pada sifat skenario, kita dapat menggunakan lebih dari satu tag untuk satu fitur. Setiap kali Mentimun menemukan panggilan yang sesuai, skenario tertentu akan dijalankan.

Mentimun juga menyediakan cara untuk membalik pilihan tag. Pertimbangkan bahwa dari 25 skenario yang ditetapkan, 10 di antaranya ditandai sebagai uji asap. Kami hanya diminta untuk menjalankan skenario uji regresi.

Untuk ini, kita dapat menggunakan "~" di kelas runner JUnit untuk mengecualikan skenario pengujian asap. Ini akan terlihat seperti berikut.

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

public class runTest { }

Saat mendefinisikan banyak tag, kita juga dapat mendefinisikan logika atau / dan logika dan operasi.

  • Mendefinisikan logis atau di kelas pelari - @dev,@wip - Dikatakan bahwa skenario yang cocok dengan salah satu tag ini perlu dijalankan.

  • Mendefinisikan logis atau di kelas pelari - [@dev,~@wip] − Dikatakan bahwa skenario yang cocok dengan kedua tag ini perlu dijalankan.