Nedir? Cucumber Özellik Dosyası ve Adım Tanımı? (Örnek)
⚡ Akıllı Özet
Cucumber Özellik dosyaları, Gherkin'de davranışları sade bir dille tanımlarken, adım tanımları her satırı çalıştıran kodu içerir. Cucumber Proje, özellikler dizininin altında sabit bir klasör düzeninde saklanan her ikisine de ihtiyaç duyar.
Her Cucumber projesi için, projenin kök dizininde "features" adında tek bir klasör bulunur. Tüm Cucumber özellikleriniz burada yer alır. Bu klasörde ayrıca step_definition ve support klasörleri de bulunur.
Bu düzen önemlidir, çünkü Cucumber Dosyalarınızı yapılandırma yerine kurala göre keşfeder. Özellikler dizininin dışında bulunan bir özellik dosyası asla okunmaz.
“Özellik Dosyası” Nedir?
Özellikler dosyası, üst düzey açıklamayı içerir. Test Senaryosu Basit bir dille ifade etmek gerekirse, şu şekilde bilinir: salatalıkGherkin, sade İngilizce bir metin dilidir.
Cucumber Özellik dosyası aşağıdaki bileşenlerden oluşur:
- Özellik: Bir özellik, yürütülmesi gereken mevcut test komut dosyasını tanımlar.
- senaryo: Senaryo, belirli bir test senaryosu için adımları ve beklenen sonucu açıklar.
- Senaryo Taslağı: Senaryo taslağı kullanılarak birden fazla veri kümesi için aynı senaryo yürütülebilir. Veriler (II) ile ayrılmış bir tablo yapısıyla sağlanır.
- Verilmiş: Yürütülecek metnin içeriğini belirtir. “Given” veri tabloları kullanılarak adım da parametrelendirilebilir.
- Ne zaman“Ne zaman” ifadesi, gerçekleştirilmesi gereken test eylemini belirtir.
- SonraTestin beklenen sonucu "O zaman" ile gösterilebilir.
Bir dosya bir Özellik içerir. Altındaki senaryolar, özelliği gösteren somut örneklerdir ve her senaryo aynı ritmi izler: başlangıç bağlamını tanımlayın, bir olayı tanımlayın, beklenen sonucu tanımlayın.
Daha sonra, Özellik Dosyasının nasıl yazılacağını öğreneceğiz. Cucumber örnekle.
Örnek Özellik Dosyası Örneği:
Bu eğitimde yayınlanan orijinal örnek, aşağıda aynen yazıldığı gibi yeniden verilmiştir.
Feature: Visit career guide page in career.guru99.com Scenario: Visit career.guru99.com Given: I am on career.guru99.com When: I click on career guide menu Then: I should see career guide page
⚠️ Düzeltme: Yukarıdaki örnekte, iki noktadan sonra iki nokta üst üste işareti yer almaktadır. Verilmiş, Ne zaman hem de SonraGherkin, sonuna iki nokta üst üste koyuyor. Özellik hem de senaryo yalnızca. İki nokta üst üste ile takip edilen bir adım anahtar kelimesi adım olarak ayrıştırılmaz, bu nedenle Cucumber Bu satırı sessizce görmezden gelir. Düzeltilmiş dosya şu şekildedir.
Feature: Visit career guide page in career.guru99.com Scenario: Visit career.guru99.com Given I am on career.guru99.com When I click on career guide menu Then I should see career guide page
Ayrıştırıcı tarafından girinti zorunlu değildir, ancak her seviye için iki boşluk geleneksel stildir ve uzun bir özelliği taramayı çok daha kolaylaştırır. Aşağıdaki animasyon, bir özellik dosyasının çalıştırılmasını ve her adımın geçtikçe yeşil renge dönüşmesini göstermektedir.
“Adım Tanımı” nedir?
Adım tanımı, özellik dosyalarındaki (Given/When/Then tarafından sunulan) Test Senaryosu Adımlarını kodla eşler. Test Edilen Uygulamadaki adımları yürüten ve sonuçları beklenen sonuçlara göre kontrol eden birimdir. Bir adım tanımının yürütülmesi için, bir özellikteki verilen bileşenle eşleşmesi gerekir. Adım tanımı ruby dosyalarında “features/step_definitions/*_steps.rb” altında tanımlanır.
Eşleştirme yalnızca adımın metnine göre yapılır. Cucumber Tanım ararken anahtar kelimeyi dikkate almaz; bu nedenle aynı işlem grubundaki iki adım, biri "Verilen" diğeri "O zaman" olsa bile asla aynı metni içermeyebilir.
Adım Tanımı Örneği: Burada yukarıda kullanacağız Cucumber career.guru99.com adresini taramaya ilişkin özellik dosyası örneği. Aşağıda gösterildiği gibi "Ne zaman, O zaman, Verilen" gibi özellikleri kullanacağız. Cucumber Özellik Dosyası örnekleri.
Step 1: Given (/^ I am on career.guru99.com$/) do Browser.goto "http://career.guru99.com" -This will visit career.guru99 on browser end Step 2: When (/^ click on career guide menu$/) do Browser.text (:name, " career guide" ).click – This will click "career guide menu" end Step 3: Then (/^ I should see career guide page$/) do Browser.goto "http://career.guru99.com/category/career-guide/" - It will visit "career guide page" end
⚠️ Dillerle ilgili bir not: Yukarıdaki tanımlar Ruby'ye aittir ve Ruby'nin kökeni de buradan gelmektedir. Cucumber başladı ve bu yüzden klasörün adı böyle. step_definitions ve dosyalar şu şekilde bitiyor: _steps.rbAynı özellik dosyası, yazılan adım tanımlarını da yönlendirir. Java, JavaSenaryo, Python veya Gherkin'de tek bir değişiklik yapmadan C# ile. Cucumber-JVM'de normal ifade bir metodun ek açıklamasına taşınır:
@Given("I am on career.guru99.com") public void i_am_on_the_career_page() { driver.get("http://career.guru99.com"); }
Hangi dili seçerseniz seçin, uygulama detaylarının yer alması gereken tek yer adım tanımıdır. Keeping Özellik dosyasındaki seçiciler ve HTTP çağrıları, programlama bilmeyen birinin senaryoyu okumasını sağlayan şeydir. ilk Cucumber senaryo Bu kılavuz, bu eşleştirmeyi baştan sona kurar.
Özellik Dosyasında Senaryo Taslağı ve Örnekleri
Bir değeri değiştirmek için bir senaryoyu üç kez kopyalamak, özellik dosyasının okunamaz hale gelmesinin en yaygın yoludur. Senaryo Taslağı Kopyaları bir şablonla değiştirir ve bir Örnekler Tablo değerleri sağlar.
Parametreler açılı parantezler içine yazılır ve altlarındaki tabloda yer alan sütun başlıklarından biriyle eşleşmelidir. Cucumber Değerleri, eşleşen bir adım tanımı aramadan önce değiştirir, bu nedenle tanımların kendileri özel bir işlem gerektirmez.
Scenario Outline: Search the career guide Given I am on career.guru99.com When I search for "<keyword>" Then I should see the <section> section Examples: | keyword | section | | interview | Interview Tips| | resume | Resume Guide |
Anahatları kullanırken akılda tutulması gereken birkaç nokta vardır:
- Anahat, her veri satırı için bir kez çalıştırılır. İlk satır başlık satırıdır ve asla yürütülmez.
- Senaryo taslağının ardından en az bir Örnekler bölümü gelmelidir, aksi takdirde hiçbir şey çalışmaz.
- Tablodaki boruların hizalanması zorunlu değildir, ancak hizalanmaları dosyanın okunabilirliğini korur.
- Tabloyu küçük tutun. Otuz satırlık bir tablo genellikle verilerin daha büyük bir tabloya ait olduğunun işaretidir. veri odaklı test yerine.
Arka Plan, Ve, Ama ve Diğer Gherkin Anahtar Kelimeleri
Daha önce listelenen altı bileşenin ötesinde, Gherkin'in daha uzun özellik dosyalarının okunabilirliğini sağlayan birkaç anahtar kelimesi daha vardır.
- Olayın Arka Planı — Özellikteki her senaryodan önce çalışan bir dizi "Verilen Adım" bloğu. Her senaryonun başında aynı ön koşulu yazma tekrarını ortadan kaldırır.
- Ve hem de Fakat — Tekrarlanan Given, When veya Then ifadelerinin yerine kullanılan alternatifler. Daha iyi okunurlar ve aynı şekilde davranırlar; Cucumber Adım metnine göre her iki şekilde de eşleşir.
- Kural — isteğe bağlı bir gruppingGherkin 6'da eklenen ve bir iş kuralını gösteren senaryoları toplayan bir özellik.
- Belge Dizeleri — Üç çift tırnak işaretiyle sınırlandırılmış bir metin bloğu; tek satır yeterli olmadığında adım tanımına tek bir argüman olarak iletilir.
- Veri Tabloları — Tek bir adıma bağlı, boru işaretiyle ayrılmış satırlar; bu satırlar, bir değer listesini o adıma iletmek için kullanılır.
- Etiketler — Bir Özelliğin veya Senaryonun üstüne yerleştirilen ve "@" işaretiyle başlayan etiketler; böylece çalışma zamanında bir alt küme seçilebilir.
- Yorumlar — bir satırın başına "#" işareti eklenir. Yorumlara yalnızca satırın başında izin verilir ve Gherkin'de blok yorum özelliği yoktur.
Özetle, paylaşılan kurulum içeren bir özellik dosyası şöyle görünür:
Feature: Career guide navigation Background: Given I am on career.guru99.com Scenario: Open the career guide menu Given I am signed in And my profile is complete When I click on career guide menu Then I should see career guide page But I should not see the admin panel
Sık Yapılan Özellik Dosyası Hataları ve Bunları Düzeltme Yöntemleri
köprü Cucumber Yeni başlayanlar tarafından bildirilen sorunlar, çerçeve hataları değildir. Bunlar, Gherkin kurallarının sessizce başarısız olan küçük ihlalleridir.
| Hata | Ne oluyor | sabit |
|---|---|---|
| Given, When veya Then kelimelerinden sonra iki nokta üst üste. | Bu satır bir adım olarak algılanmıyor ve atlanıyor. | Sadece Feature ve Scenario kelimelerinden sonra iki nokta üst üste kullanın. |
| Aynı metne sahip iki adım | Cucumber Anahtar kelime göz ardı edildiği için bunları kopya olarak değerlendirir. | İki ifadenin farklı okunması için bir adımı yeniden yazın. |
| Özellik dosyası, özellikler dizininin dışında yer almaktadır. | Dosya hiçbir zaman bulunamıyor ve hiçbir test çalıştırılmıyor. | Her şeyi saklayın. .feature Özellikler klasörünün altındaki dosya |
| Tek bir senaryoda on beş adım | Senaryo, dokümantasyon açısından işlevini yitiriyor. | Üç ila beş adım hedefleyin ve ayrıntıları adım tanımlarına dahil edin. |
| Ardından veritabanındaki bir satır üzerinde doğrulama işlemi gerçekleştirir. | Test başarılı olurken, kullanıcıya görünen davranış bozuluyor. | Sayfa veya yanıt gibi gözlemlenebilir çıktılar üzerinde doğrulama yapın. |
| Örnek içermeyen Senaryo Taslağı tablosu | Şablon hiçbir zaman çalıştırılmıyor. | Taslağın hemen altına bir Örnekler bölümü ekleyin. |
Bu sorunları proje paketi büyümeden önce düzeltmek, sonrasında düzeltmekten çok daha ucuzdur, çünkü bu arada yazılan her senaryo aynı yapıyı kopyalar. Özellik dosyaları düzgün çalışmaya başladıktan sonraki adım, projeyi birbirine bağlamaktır — bkz. Cucumber Kurulum adım adım rehber ve daha geniş kapsamlı otomasyon testi serisi.

