cucumber Samouczek
Pierwsze kroki z ogórkiem
Szukaj…
Uwagi
O ogórku
Ogórek to narzędzie, które uruchamia wykonywalne specyfikacje oprogramowania. Specyfikacje, zwane „funkcjami”, są napisane w ustrukturyzowanym języku naturalnym. Ogórek wykonuje funkcję, mapując każdy ze swoich kroków na „definicję kroku” zapisaną w języku programowania obsługiwanym przez tę implementację Ogórka. Ogórek jest implementowany w wielu językach programowania, w tym Ruby (oryginalny), Java i JavaScript . Jest również tłumaczony na wiele języków ludzkich.
Ogórek został napisany w celu wspierania zwinnej metodologii zwanej Behaviour-Driven Development (BDD). W BDD programowanie rozpoczyna się na zewnątrz, pisząc testy akceptacyjne, które opisują funkcjonalność oprogramowania z punktu widzenia użytkownika (a nie z punktu widzenia programisty, np. W testach jednostkowych). Funkcje ogórka służą jako te testy akceptacyjne.
Ogólnie rzecz biorąc, funkcje Ogórka są dokumentacją czytelną dla człowieka, która jest również wykonywalnym pakietem testowym, co oznacza, że dokumentacja i testy zawsze się zgadzają. Ogórek jest przydatny w komunikowaniu się z interesariuszami niebędącymi programistami na temat dokumentacji i testów. Pozwala także programistom pisać testy na poziomie koncepcyjnym bez zbędnych obaw związanych z językiem programowania.
Ogórek jest najczęściej używany do określania i testowania aplikacji internetowych przy użyciu sterownika przeglądarki, takiego jak Selenium lub PhantomJS. Można go jednak używać z dowolnym oprogramowaniem, które można uruchomić i którego stan lub wyniki można określić na podstawie języka programowania obsługiwanego przez implementację Cucumber.
Inna dokumentacja
Oficjalna dokumentacja znajduje się na stronie https://cucumber.io/docs . Dokumentacja wygenerowana z funkcji Ogórka, które opisują implementacje Ogórka, znajduje się pod adresem
- JavaScript: https://relishapp.com/cucumber/cucumber-js/docs
- Ruby: https://relishapp.com/cucumber/cucumber/docs
https://relishapp.com/explore zawiera niektóre inne narzędzia i przykłady związane z Ogórkiem, chociaż niestety, Cucumber-JVM.
Ten temat
W tym temacie należy podać tylko kilka przykładów, które wprowadzają czytelnika w koncepcje Ogórka. Inne sekcje podają pełne przykłady instalacji, użycia wiersza polecenia i IDE, funkcji, definicji kroków itp.
Funkcja ogórka
Cucumber używa składni korniszonu do opisywania zachowań twojego oprogramowania w ustrukturyzowanym języku naturalnym.
Jako taki, Ogórek nie jest ramą testową (powszechne nieporozumienie), ale ramą dokumentacji systemu , która nie różni się bardzo od innych, takich jak Scenariusz Przypadku Użycia. Powszechne nieporozumienie wynika z faktu, że dokumentację Ogórka można zautomatyzować, aby zapewnić, że odzwierciedla on rzeczywiste zachowanie systemu .
Pakiet dokumentacji Cucumber składa się z Features , z których każda opisuje funkcję Twojego oprogramowania, napisaną w Korniszonie i hostowaną we własnym pliku. Organizując te pliki w strukturę katalogów, możesz grupować i organizować funkcje:
- Bankowość/
- wycofanie. cechy
- atm. cechy
- pożyczka osobista
- handlowy/
- portfolio.feature
- intraday.feature
- hipoteka/
- ocena. cechy
- rachunkowość
Każda Feature jest zwykłym plikiem tekstowym złożonym z opcjonalnej, nieustrukturyzowanej, czysto informacyjnej sekcji wprowadzającej i jednego lub więcej Scenarios , z których każdy reprezentuje warunek użycia lub przypadek użycia.
Przykład:
Feature: Documentation
As a StackOverflow user or visitor
I want to access the documentation section
Scenario: search documentation on Stack Overflow
Given I am on StackOverflow
And I go to the Documentation section
When I search for "cucumber"
And I follow the link to "cucumber"
Then I should see documentation for "cucumber"
Każda linia rozpoczynająca się od: Dany , Kiedy , I , Ale lub Następnie nazywa się Step . Każdy krok może zaczynać się od dowolnego z tych słów bez względu na kolejność, ale zwykle używa się ich w jak najbardziej naturalny sposób.
Funkcje mogą być również organizowane poprzez Tags , adnotacje wydawca może umieścić na Feature lub Scenario do dalszego kategoryzować niego.
Wykonalność funkcji jest osiągana za pomocą kodu kleju, który można napisać w wielu różnych językach (Java, Ruby, Scala, C / C ++): każdy Step jest dopasowywany do kodu kleju w celu zidentyfikowania Step Definitions (zwykle w skrócie StepDef ) poprzez wyrażenia regularne.
Każdy Step może mieć tylko jedną powiązaną Step Definition .
Gdy Feature jest wykonywana, wykonywany jest każdy komponujący Scenario , co oznacza, że każdy StepDef pasujący do Step w każdym Scenario zostaje wykonany.
Instalacja Pure Ruby
Aby zainstalować Cucumber do użytku z Ruby, wystarczy użyć polecenia
gem install cucumber
Alternatywnie, jeśli używasz programu pakującego, możesz dodać następujący wiersz do swojego pliku Gemfile
gem 'cucumber'
A następnie uruchom pakiet
bundle install
[Myślę, że należy to do własnego tematu, Instalacja. Stworzyłem ten temat i skopiowałem tam ten przykład. Po zatwierdzeniu tego tematu przeniosę go tam i usunę kopię.]
Definicja kroku Ogórka w Ruby
W features / step_definitions / dokumentacja.rb:
When /^I go to the "([^"]+)" documentation$/ do |section|
path_part =
case section
when "Documentation"
"documentation"
else
raise "Unknown documentation section: #{section}"
end
visit "/documentation/#{path_part}/topics"
end
Then /^I should see the "([^"]+) documentation"$/ do |section|
expect(page).to have_css('h2.doctag_title a', text: section)
end
Te kroki wykonują aplikację internetową. Są tak proste, jak mogą być, a jednocześnie są praktyczne.
Każdy krok rozpoczyna się słowem kluczowym Korniszon, które w pliku definicji kroku jest metodą rejestrującą krok za pomocą Ogórka. Metoda definiująca krok przyjmuje wyrażenie regularne, które pasuje do linii w scenariuszu, oraz blok, który jest wykonywany, gdy scenariusz dotrze do pasującej linii. Grupy przechwytywania w wyrażeniu regularnym są przekazywane do bloku jako parametry bloku.
Krok When ma prosty, liniowy przykład przejścia z czytelnego dla człowieka odwołania do strony („Dokumentacja”) na adres URL. Zestawy Real Cucumber zwykle umieszczają tę logikę w osobnej metodzie. Metodę visit zapewnia Capybara. Kapibara nie jest wymagana do używania Ogórka, chociaż jest bardzo często stosowana z nim. visit informuje przeglądarkę kontrolowaną przez Capybara o odwiedzenie danego adresu URL.
Krok Then pokazuje, w jaki sposób można przetestować zawartość strony. expect / to jest dostarczany przez RSpec (ponownie, nie wymagany przez Cucumber, ale bardzo często używany z nim). have_css zapewnia Capybara. Oczekuje się, że dany selektor CSS pasuje do elementu na stronie, który zawiera podany tekst. Pamiętaj, że to oczekiwanie nie powiedzie się, jeśli żądanie przeglądarki nie powiedzie się.
Więcej przykładów znajduje się w temacie „Definicja kroku” .