2012-10-16 16 views
5

Używam ogórka-watir-webdriver dla celów automatyzacji. Mam następującą strukturę katalogów:Najlepsza praktyka prowadzenia wspólnych kroków z ogórkiem

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

i tak dalej. Muszę wiedzieć, co jest najlepszą praktyką, aby zmniejszyć nadmiarowość w 1.rb i 2.rb. feature1 i feature2 są całkowicie różne, więc nie mogę połączyć obu w jednym katalogu. Istnieje również część, w której linia charakterystyczna jest taka sama, ale wykonanie w krokach jest inne, więc stworzy niejednoznaczność, jeśli są razem.

muszę wiedzieć, czy jest jakaś część wspólna w 1.rb i 2.rb gdzie mam umieścić go tam jest najlepszą praktyką aby utrzymać wspólnych definicji kroku.

+0

Proszę wyświetlić odpowiedni kod. –

+0

czego potrzebujesz? Podobnie jak "sprawdź wpis do bazy danych" jest w obu funkcjach, ale bazy danych, które sprawdzają, są inne, nie chcę ich mieszać i komplikować. Ale kroki takie jak "Given I logged in" są takie same, więc chcę umieścić ich definicje kroków gdzieś w połączeniu. –

Odpowiedz

1

Ogórek przeszukuje tylko dla definicji krok w bieżącym lub następnym katalogów. Więc nie możemy mieć wspólny katalog definicji kroku lub plik poniżej dwóch katalogów fabularnych, Znalazłem jedno rozwiązanie tego jak

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

teraz załadować ta definicja krok dodać

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

w 1. rbs. też możesz mieć dłuższą strukturę katalogów następnie można zachować common_steps.rb plik w każdym takim katalogu zawierającego wspólne kroki następującymi cechami i można wymagać poprzedni plik common_steps.rb with--

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

tego kodu. Spowoduje to zachowanie struktury katalogów i plików definicji_danych.

2

W porządku jest oddzielenie funkcji do poszczególnych katalogów, ale najlepiej jest przechowywać pliki *_step.rb w jednym katalogu step_definitions w katalogu features. Możesz umieścić kroki wspólne dla obu funkcji w pliku common_steps.rb (jeszcze lepiej byłoby coś w stylu login_steps.rb i test_data_creation_steps.rb zamiast common_steps.rb).

Aby przetłumaczyć, że do tego samego schematu struktury katalogów styl jak w swoim pytaniu, sugeruję następujące:

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

Dziękuję człowiekowi, ale mam tylko jedną wątpliwość, czy te definicje kroków zostaną załadowane na wypadek, gdybym uruchomił "ogórek /features/feature1/1.feature" , jeśli drzewo ma 2-3 poziomy głębokości i chcę uruchomić określone funkcje, takie jak "ogórek /features/feature1/feature1.1/1.1.feature" następnie ogórek autoload/feature/step_definition –

+0

Tak, zostaną załadowane. –

+0

To niepoprawne, nie zostaną załadowane. Musisz powiedzieć Cucumberowi, gdzie ma wyglądać: 'cucumber -r funkcje/feature1/1.feature'. Domyślnie definicje kroków i kod pomocniczy są wyszukiwane w katalogu zawierającym określone funkcje i ich podkatalogi. – jbpros

Powiązane problemy