2012-10-16 14 views
5

Otomasyon amaçlı olarak cucumber-watir-webdriver kullanıyorum. Aşağıdaki dizin yapısına sahibim:Salatalığın ortak adımlarını devam ettirmek için en iyi yöntem

|features 
-|feature1 
--|1.feature 
--|step_definitions 
---|1.rb 
-feature2 
--|2.feature 
--|step_definitions 
---|2.rb 

vb. 1.rb ve 2.rb'daki fazlalıkları azaltmak için en iyi uygulamanın ne olduğunu bilmem gerekiyor. feature1 ve feature2 tamamen farklıdır, bu yüzden her iki dizini de birleştiremiyorum. Ayrıca, özellik çizgisinin aynı olduğu ancak adım adım yürütme işleminin farklı olduğu bölümler vardır, bu nedenle birlikte olduklarında belirsizlik yaratacaktır.

1.rb ve 2.rb'da ortak bir bölümün olup olmadığını bilmem gerekir; burada ortak adım tanımlarını tutmak için en iyi uygulama var mıdır.

+0

Lütfen ilgili kodu gösterin. –

+0

Neye ihtiyacınız var? "Veritabanı girişini kontrol et" gibi her iki özellikte de vardır, ancak kontrol ettikleri veritabanları farklıdır ve bunları karıştırmak ve karmaşıklaştırmak istemiyorum. Ama "Giriş yaptığım" gibi adımlar aynıdır, bu yüzden adım tanımlarını bir yerlerde birleştirmek istiyorum. Sadece bir şüphe var ama –

cevap

1

Salatalık yalnızca geçerli veya aşağıdaki dizinlerde adım tanımları arar. yüzden ben şimdi bu adım tanım sizin 1'de

require "#{File.dirname(__FILE__)}/../../common_steps.rb" 

eklemek yüklemek için

|features 
-|feature1 
--|1.feature 
--|step_definitions 
---1.rb 
-feature2 
--|2.feature 
--|step_definitions 
---2.rb 
-|common_steps.rb <-- keep common steps in here 

olarak buna bir çözüm bulduk, iki özellik dizinleri altında ortak adım tanımları dizin veya dosya olamaz. rbs. da o zaman aşağıdaki özelliklerden ortak adımlar içeren her tür dizinde common_steps.rb dosya tutabilir uzun dizin yapısına sahip olabilir ve

require "#{File.dirname(__FILE__)}/../common_steps.rb" 

bu kod Şarkı söylemeyi kes önceki common_steps.rb dosyasını gerektirebilir. Bu, dizin yapınızı ve step_definition dosyalarını temiz tutar

2

Özelliklerinizi tek tek dizinlere ayırmak iyidir, ancak *_step.rb dosyalarınızı bir step_definitions dizininde features dizininin altında tutmak en iyisidir. Her iki özellik için ortak adımları bir common_steps.rb dosyasına koyabilirsiniz (daha iyi login_steps.rb ve common_steps.rb yerine test_data_creation_steps.rb gibi bir şey olurdu).

sorunuzu gibi ben uygulamanızı öneririm aynı stil dizin yapısı diyagramı içine çevirmek için:

|features 
-|feature1 
--|1.feature 
-feature2 
--|2.feature 
-|step_definitions 
--|1.rb 
--|2.rb 
--|common_steps.rb <-- put your common steps in here 
+0

Teşekkür adam o adım tanımları ağaç 2-3 düzeyinde derin olup olmadığını "salatalık /features/feature1/1.feature" çalıştırmak durumunda yüklenecek ve ben gibi belirli özelliğini çalıştırmak istediğiniz "salatalık /features/feature1/feature1.1/1.1.feature" sonra salatalık özdevinimli_yükle/özellik/step_definition –

+0

Evet, onlar yüklenecektir olacak. –

+0

Bu yanlış, yüklenmeyecek. Salatalık yerlerine şunları söyleyeceksiniz: salatalık -r özellikleri/özellik1/1.feature özellikleri. Varsayılan olarak, adım tanımları ve destek kodu belirtilen özelliğin (ler) i ve onun subdirs içeren dizinde aranmaktadır. – jbpros