cucumber
Składnia korniszonu
Szukaj…
Wprowadzenie
Korniszon jest czytelnym językiem dla automatyzacji testów i dokumentacji testów. Jest rozumiany przez Cucumber i razem istnieje jako narzędzie rozwoju sterowane zachowaniem.
Składnia
- Cecha: to słowo kluczowe oznacza, że poniżej znajduje się podstawowy opis lub nazwa testowanej lub dokumentowanej funkcji.
- Tło: to słowo kluczowe oznacza kroki, które zostaną uruchomione przed każdym scenariuszem w obiekcie.
- Scenariusz: to słowo kluczowe reprezentuje nazwę lub podstawowy opis konkretnego scenariusza testującego tę funkcję.
- Zarys scenariusza: to słowo kluczowe oznacza, że scenariusz zostanie uruchomiony N razy dla każdego argumentu wymienionego w przykładach jawnie przekazanych przez nazwę kolumny owiniętą w nawiasach kątowych.
- Przykłady: to słowo kluczowe odnotowuje listę statycznych argumentów, które zostaną przekazane do konspektu scenariusza.
- Biorąc pod uwagę: to słowo kluczowe reprezentuje dany krok lub warunek wstępny, który należy przyjąć przed kontynuowaniem. W paradygmacie Arrange, Act, Assert podana reprezentuje „Arrange”.
- Kiedy: to słowo kluczowe reprezentuje krok kiedy lub zachowanie, które ma zostać potwierdzone. W paradygmacie „Arange, Act”, „Assert”, podana reprezentuje „Akt”.
- Następnie: to słowo kluczowe reprezentuje krok wtedy, czyli innymi słowy, krok, w którym wynik zachowania jest sprawdzany. W paradygmacie Arrange, Act, Assert podana reprezentuje „Assert”.
- Oraz: to słowo kluczowe jest używane w połączeniu z dowolnym z powyższych słów kluczowych. Jeśli masz dwa podane wyrażenia, zamiast jednoznacznego wywołania Given dwa razy, możesz powiedzieć „Biorąc pod uwagę A i B”.
Podstawy
Ten przykład omówi podstawową strukturę pliku funkcji Ogórek w Korniszonie. Pliki funkcji używają kilku słów kluczowych w podstawowej składni.
Spójrzmy na podstawowe słowa kluczowe:
- Cecha: to słowo kluczowe oznacza, że poniżej znajduje się podstawowy opis lub nazwa testowanej lub dokumentowanej funkcji.
- Scenariusz: to słowo kluczowe reprezentuje nazwę lub podstawowy opis konkretnego scenariusza testującego tę funkcję.
- Dane słowo kluczowe reprezentuje dany krok lub warunek wstępny, który należy przyjąć przed kontynuowaniem. W paradygmacie Arrange, Act, Assert podana reprezentuje „Arrange”.
- Kiedy to słowo kluczowe reprezentuje krok kiedy lub zachowanie, które ma zostać potwierdzone. W paradygmacie „Arange, Act”, „Assert”, podana reprezentuje „Akt”.
- To słowo kluczowe oznacza następnie krok, czyli innymi słowy, etap, w którym wynik zachowania jest sprawdzany. W paradygmacie Arrange, Act, Assert podana reprezentuje „Assert”.
- A Ten parametr jest używany w połączeniu z dowolnym z powyższych słów kluczowych. Jeśli masz dwa podane wyrażenia, zamiast jednoznacznego wywołania Given dwa razy, możesz powiedzieć „Biorąc pod uwagę A i B”.
- Ale to słowo kluczowe jest używane łącznie z Danym , Kiedy i Następnie, aby wskazać, że coś nie powinno się wydarzyć. To A But not B.
Wszystkie słowa kluczowe muszą znajdować się w nowym wierszu i muszą być pierwszym słowem w nowym wierszu, aby mogły zostać rozpoznane przez analizator korniszonu. Słowa kluczowe Feature i Scenario muszą znajdować się bezpośrednio po dwukropku, jak pokazano w poniższym przykładzie. Biorąc pod uwagę, kiedy, a następnie i nie wymagają dwukropka.
Oprócz słów kluczowych możesz pisać opisy i komentarze. Opisy występują po słowie kluczowym, ale w tym samym wierszu, gdy komentarze pojawiają się w wierszach pod słowami kluczowymi. Podczas pisania komentarzy do Funkcji zwykle podaje się wyraźne reguły określające krawędzie i warunki, które prowadzą do różnych wyników zachowań.
Feature: Product Login
As a user, I would like to be able to use my credentials to successfully
login.
Rules:
- The user must have a valid username
- The user must have a valid password
- The user must have an active subscription
- User is locked out after 3 invalid attempts
- User will get a generic error message following
login attempt with invalid credentials
Scenario: The user successfully logs in with valid credentials
This scenario tests that a user is able to successfully login
provided they enter a valid username, valid password, and
currently have an active subscription on their account.
Given the user is on the login page
When the user signs in with valid credentials
Then the user should be logged in
Sparametryzowane kroki
Pisząc Korniszon, mogą zdarzyć się sytuacje, w których chcesz sparametryzować swoje kroki w celu ponownego wykorzystania przez inżyniera, który wdraża plany testów. Kroki otrzymują parametry poprzez grupy przechwytujące wyrażenia regularne. (Inżynieria Uwaga: Jeśli nie ma dopasowania parametrów dla każdej grupy przechwytywania w wyrażeniach regularnych można oczekiwać „CucumberException: arity niedopasowania” do rzucania) W poniższym przykładzie, zdecydowaliśmy się owinąć argumentów w cudzysłowach, a także jako akceptuj liczby całkowite jako argumenty.
Feature: Product Login
As a user, I would like to be able to use my credentials to successfully
login.
Rules:
- The user must have a valid username
- The user must have a valid password
- The user must have an active subscription
- User is locked out after 3 invalid attempts
- User will get a generic error message following
login attempt with invalid credentials
Scenario: The user successfully logs in with valid credentials
This scenario tests that a user is able to successfully login
provided they enter a valid username, valid password, and
currently have an active subscription on their account.
Given the user is on the login page
When the user signs in with "valid" credentials
Then the user should be logged in
Scenario: The user attempts to log in with invalid credentials
This scenario tests that a user is not able to log in when
they enter invalid credentials
Given the user is on the login page
When the user signs in with "invalid" credentials
Then the user should be logged in
Scenario: The user is locked out after too many failed attempts
This scenario validates that the user is locked out
of their account after failing three consecutive
attempts to log in
Given the user is on the login page
When the user fails to log in 3 times
Then the user should be locked out of their account
Tło funkcji
Jak można zauważyć w powyższym przykładzie, przepisujemy ten sam krok wiele razy:
Given the user is on the login page
Może to być wyjątkowo uciążliwe, szczególnie jeśli mamy więcej niż jeden dany krok, który jest ponownie wykorzystywany. Korniszon zapewnia rozwiązanie tego problemu, podając nam inne słowo kluczowe do pracy z: Tło:.
Słowo kluczowe w tle służy do uruchomienia kroków zadeklarowanych pod nim przed każdym scenariuszem w Funkcji. Pamiętaj, aby nie dodawać kroku w tle, chyba że masz pewność, że jest to konieczne w każdym scenariuszu. Podobnie jak inne słowa kluczowe, Tło zawiera opis lub nazwę, a poniżej mogą znajdować się komentarze. Podobnie jak funkcja i scenariusz, tło musi być poprzedzone dwukropkiem.
Feature: Product Login
As a user, I would like to be able to use my credentials to successfully
login.
Rules:
- The user must have a valid username
- The user must have a valid password
- The user must have an active subscription
- User is locked out after 3 invalid attempts
- User will get a generic error message following
login attempt with invalid credentials
Background: The user starts out on the login page
Given the user is on the login page
Scenario: The user successfully logs in with valid credentials
This scenario tests that a user is able to successfully login
provided they enter a valid username, valid password, and
currently have an active subscription on their account.
When the user signs in with "valid" credentials
Then the user should be logged in
Scenario: The user attempts to log in with invalid credentials
This scenario tests that a user is not able to log in when
they enter invalid credentials
When the user signs in with "invalid" credentials
Then the user should be logged in
Scenario: The user is locked out after too many failed attempts
This scenario validates that the user is locked out
of their account after failing three consecutive
attempts to log in
When the user fails to log in 3 times
Then the user should be locked out of their account
Zarys scenariusza
W niektórych przypadkach możesz chcieć wielokrotnie powtarzać ten sam scenariusz, zastępując argumenty. W tym przypadku Korniszon udostępnia kilka nowych słów kluczowych, aby uwzględnić tę sytuację, Zarys scenariusza: i Przykład:. Słowo kluczowe Schemat scenariusza informuje Cucumber, że scenariusz zostanie uruchomiony wielokrotnie, zastępując argumenty z listy. Słowo kluczowe Przykłady jest wywoływane przed jawnym zanotowaniem listy. Argumenty dotyczące konturów scenariuszy powinny być owinięte w nawiasy kątowe. W poniższym przykładzie zwróć uwagę, że nazwy argumentów owinięte w nawiasach kątowych odpowiadają nazwom kolumn wymienionym w sekcji Przykłady. Każda kolumna jest oddzielona pionowymi paskami, z nazwami kolumn w pierwszym rzędzie.
Feature: Product Login
As a user, I would like to be able to use my credentials to successfully
login.
Rules:
- The user must have a valid username
- The user must have a valid password
- The user must have an active subscription
- User is locked out after 3 invalid attempts
- User will get a generic error message following
login attempt with invalid credentials
Background: The user starts out on the login page
Given the user is on the login page
Scenario Outline: The user successfully logs in with their account
This scenario outlines tests in which various users attempt
to sign in successfully
When the user enters their <username>
And the user enters their <password>
Then the user should be successfully logged on
Examples:
| username | password |
| frank | 1234 |
| jack | 4321 |
Tagi
Do celów dokumentacji możesz filtrować plany testów lub scenariusze według kategorii. Programiści mogą chcieć przeprowadzać testy w oparciu o te same kategorie. Korniszon pozwala kategoryzować funkcje, a także poszczególne scenariusze za pomocą tagów. W poniższym przykładzie zauważ, że powyższym słowem kluczowym Feature jest tag „@Automation”. Korniszon rozpoznaje to jako znacznik użytkownika symbolu „@”. W tym przykładzie inżynier chce wyjaśnić, że testy te są wykorzystywane do automatyzacji, gdzie nie każdy test jest w stanie zautomatyzować, niektóre testy muszą być wykonane ręcznie w ramach kontroli jakości.
Zauważ też, że tag @Production został dodany do scenariusza blokowania użytkownika. W tym przykładzie dzieje się tak, ponieważ ten scenariusz jest aktywny tylko w środowisku produkcyjnym aplikacji. Deweloperzy nie chcą, aby ich konta w piaskownicy były blokowane podczas programowania. Te tagi pozwalają im wymusić, aby ten test był przeprowadzany tylko w środowisku produkcyjnym.
Na koniec Zarys scenariusza ma tag @Staging. Na potrzeby tego przykładu wynika to z faktu, że używane konta są kontami przejściowymi i nie będą działać w innych środowiskach. Podobnie jak tag @Production, zapewnia to, że testy te będą uruchamiane tylko w środowisku pomostowym.
To tylko kilka przykładów tego, gdzie, jak i dlaczego możesz używać tagów. Ostatecznie te tagi będą miały znaczenie dla Ciebie i programistów i mogą być dowolne i służyć do kategoryzacji według własnego uznania.
@Automation
Feature: Product Login
As a user, I would like to be able to use my credentials to successfully
login.
Rules:
- The user must have a valid username
- The user must have a valid password
- The user must have an active subscription
- User is locked out after 3 invalid attempts
- User will get a generic error message following
login attempt with invalid credentials
Background: The user starts out on the login page
Given the user is on the login page
Scenario: The user successfully logs in with valid credentials
This scenario tests that a user is able to successfully login
provided they enter a valid username, valid password, and
currently have an active subscription on their account.
When the user signs in with "valid" credentials
Then the user should be logged in
Scenario: The user attempts to log in with invalid credentials
This scenario tests that a user is not able to log in when
they enter invalid credentials
When the user signs in with "invalid" credentials
Then the user should be logged in
@Production
Scenario: The user is locked out after too many failed attempts
This scenario validates that the user is locked out
of their account after failing three consecutive
attempts to log in
When the fails to log in 3 times
Then the user should be locked out of their account
@Staging
Scenario Outline: The user successfully logs in with their account
This scenario outlines tests in which various users attempt
to sign in successfully
When the user enters their <username>
And the user enters their <password>
Then the user should be successfully logged on
Examples:
| username | password |
| frank | 1234 |
| jack | 4321 |
Porady z korniszonu
- Każdy scenariusz testuje jedno zachowanie
- Scenariusze są pisane w sposób deklaratywny
- Unikaj przypadkowych szczegółów w scenariuszu
- Pomiń oczywiste
- Unikaj kroków łączących
- Krótkie scenariusze
- Nie musisz mieć wielu scenariuszy w tej samej funkcji
- Użyj opisowych nazw scenariuszy
- Masz tylko jeden krok
- Użyj „powinien” w krokach Następnie