cucumber
Gherkin Syntax
Sök…
Introduktion
Gherkin är ett företagsläsbart språk för testautomation och testdokumentation. Det förstås av Cucumber och finns tillsammans som ett beteendedriven utvecklingsverktyg.
Syntax
- Funktion: det här sökordet anger att det följande är en grundläggande beskrivning eller namn på funktionen som testas eller dokumenteras.
- Bakgrund: det här sökordet anger steg som kommer att köras före varje scenario i funktionen.
- Scenario: detta sökord representerar namnet eller den grundläggande beskrivningen av ett visst scenario som testar funktionen.
- Scenarioöversikt: Detta nyckelord innebär att scenariot körs N gånger för varje argument som listas i exempel som uttryckligen passeras av kolumnnamn inslagna i vinklade parenteser.
- Exempel: detta nyckelord noterar listan med statiska argument som kommer att skickas in i ett scenarioöversikt.
- Givet: detta nyckelord representerar ett givet steg eller en förutsättning som antas innan du fortsätter. I Arrange, Act, Assert paradigm, given representerar "Arranger".
- När: detta nyckelord representerar ett när-steg, eller det beteende som ska påstås. I Arrange, Act, Assert paradigm, given representerar "Act".
- Sedan: detta nyckelord representerar ett dåvarande steg, eller med andra ord, steget där ett beteendes resultat valideras. I Arrange, Act, Assert paradigm, given representerar "Assert".
- Och: Detta nyckelord används tillsammans med något av ovanstående nyckelord. Om du har två givna uttalanden, istället för att uttryckligen ringa Givet två gånger, kan du säga "Givet A och B".
Det grundläggande
Detta exempel kommer att gå igenom den grundläggande strukturen i en gurksfunktionsfil i Gherkin. Funktionsfiler använder flera nyckelord i grundsyntaxen.
Låt oss titta på de grundläggande nyckelorden:
- Funktion: det här sökordet anger att det följande är en grundläggande beskrivning eller namn på funktionen som testas eller dokumenteras.
- Scenario: detta sökord representerar namnet eller den grundläggande beskrivningen av ett visst scenario som testar funktionen.
- Med tanke på att detta nyckelord representerar ett givet steg eller förutsättning som antas innan du fortsätter. I Arrange, Act, Assert paradigm, given representerar "Arranger".
- När detta nyckelord representerar ett när-steg, eller det beteende som ska påstås. I Arrange, Act, Assert paradigm, given representerar "Act".
- Sedan representerar detta nyckelord ett dåvarande steg, eller med andra ord, steget där ett beteendes resultat valideras. I Arrange, Act, Assert paradigm, given representerar "Assert".
- Och detta nyckelord används tillsammans med något av ovanstående nyckelord. Om du har två givna uttalanden, istället för att uttryckligen ringa Givet två gånger, kan du säga "Givet A och B".
- Men detta nyckelord används i samband med given , när och sedan för att beteckna att något inte ska hända. Då A Men not B.
Alla nyckelord måste finnas på en ny rad och måste vara det första ordet på en ny rad för att kunna identifieras av Gherkin-tolkaren. Funktionerna och sökorden måste ha en kolon direkt efter, vilket uttrycks i exemplet nedan. Givet, när, då, och inte kräver kolon.
Förutom nyckelord kan du skriva beskrivningar och kommentarer. Beskrivningar förekommer efter nyckelordet men på samma rad, där kommentarer förekommer på rader under nyckelorden. När du skriver funktionskommentarer är det vanligt att tillhandahålla uttryckliga regler som beskriver kanter och förhållanden som leder till olika resultat av beteenden.
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
Parametriserade steg
När du skriver Gherkin kan det finnas tillfällen då du vill parameterisera dina steg för återanvändbarhet av ingenjören som genomför testplanerna. Steg tar emot parametrar genom regelbundna uttrycksfångstgrupper. ( Teknisk anmärkning: Om du inte har matchningsparametrar för varje fångargrupp i ditt reguljära uttryck kan du förvänta dig att en "CucumberException: Arity mismatch" kastas). I exemplet nedan har vi beslutat att lägga in argument i dubbla citat, också som acceptera heltal som argument.
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
Funktionsbakgrund
Som du kanske har lagt märke till i exemplet ovan, skriver vi om samma steg flera gånger:
Given the user is on the login page
Detta kan vara exceptionellt tråkigt, särskilt om vi har mer än ett givet steg som återanvänds. Gherkin ger en lösning för detta genom att ge oss ett annat nyckelord att arbeta med: Bakgrund:.
Bakgrundsnyckelordet tjänar till att köra stegen som deklareras under det före varje scenario i funktionen. Var noga med att inte lägga till bakgrundssteg såvida du inte är säker på att det är nödvändigt för varje scenario. Liksom de andra nyckelorden följs bakgrund av en beskrivning eller namn och kan ha kommentarer listade nedan. Liksom Feature och Scenario måste bakgrunden drivas av en kolon.
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
Scenarioöversikt
I vissa fall kanske du vill köra om samma scenario om och om igen och ersätta argumenten. I detta fall tillhandahåller Gherkin flera nya nyckelord för att tillgodose denna situation, Scenario Outline: och Exempel:. Scenario Outline-nyckelordet säger Cucumber att scenariot kommer att köras flera gånger och ersätter argument från en lista. Exemplen nyckelord kallas innan listan uttryckligen anges. Argument för scenariotecken bör förpackas i vinklade parenteser. Observera i exemplet nedan att argumentnamnen inslagna i de vinklade parenteserna motsvarar kolumnnamnen som listas under Exempel. Varje kolumn separeras av vertikala staplar med kolumnnamn på den första raden.
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 |
Tags
För dokumentation kan du kanske filtrera testplaner eller scenarier efter kategorier. Utvecklare kanske vill köra test baserade på samma kategorier. Med Gherkin kan du kategorisera funktioner såväl som individuella scenarier via användaren av taggar. I exemplet nedan, lägg märke till ovanstående sökordsfunktion är taggen "@Automation". Gherkin känner igen detta som en tagg av användaren av symbolen "@". I det här exemplet vill ingenjören göra det klart att dessa tester används för automatisering, där inte alla test är automatiserade, vissa test måste göras med manuell QA.
Lägg också märke till att taggen @Produktion har lagts till i användarlåset för scenariotestning. I det här exemplet beror detta på att detta scenario endast är aktivt i produktionsmiljön i applikationen. Utvecklarna vill inte att deras sandlådekonton är låsta under utvecklingen. Med dessa taggar kan de säkerställa att detta test endast körs mot produktionsmiljön.
Slutligen har Scenario Outline taggen @Staging. För detta exempel beror detta på att kontona som används är iscensättningskonton och inte fungerar i andra miljöer. Precis som @Productions-taggen garanterar detta att dessa test endast körs i Staging-miljön.
Det här är bara några exempel på var, hur och varför du kan använda taggar. I slutändan kommer dessa taggar att ha betydelse för dig och utvecklarna och kan vara vad som helst och används för att kategorisera hur du än ser.
@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 |
Gherkin tips
- Varje scenario testar ett beteende
- Scenarier skrivs på ett deklarativt sätt
- Undvik tillfälliga detaljer i scenariot
- Utelämna det uppenbara
- Undvik konjunktiva steg
- Håll dina scenarier korta
- Behöver inte många scenarier i samma funktion
- Använd beskrivande scenarionamn
- Har bara ett När-steg
- Använd "bör" i steg sedan