cucumber
Sintassi di Gherkin
Ricerca…
introduzione
Gherkin è un linguaggio leggibile dagli utenti per l'automazione dei test e la documentazione di test. È compreso da Cucumber e insieme esiste come uno strumento di sviluppo guidato dal comportamento.
Sintassi
- Funzionalità: questa parola chiave indica che quanto segue è una descrizione o un nome di base della funzionalità testata o documentata.
- Sfondo: questa parola chiave indica i passaggi che verranno eseguiti prima di ogni scenario nella funzione.
- Scenario: questa parola chiave rappresenta il nome o la descrizione di base di uno scenario particolare che verifica la funzione.
- Scenario Struttura: questa parola chiave significa che lo scenario verrà eseguito N volte per ogni argomento elencato negli esempi esplicitamente passati per nome di colonna racchiuso tra parentesi angolate.
- Esempi: questa parola chiave prende nota dell'elenco di argomenti statici che verranno passati in uno schema di scenario.
- Dato: questa parola chiave rappresenta un determinato passo, o presupposto che si presume prima di continuare. Nel paradigma Disponi, Agita, Assert, indicato rappresenta "Disponi".
- Quando: questa parola chiave rappresenta un passo quando, o il comportamento che deve essere dichiarato contro. Nel paradigma Disponi, Agisci, Assert, indicato rappresenta "Act".
- Quindi: questa parola chiave rappresenta un passaggio, o in altre parole, il passo in cui viene convalidato il risultato di un comportamento. Nel paradigma Disponi, Agisci, Assert, indicato rappresenta "Assert".
- E: questa parola chiave viene utilizzata insieme a una qualsiasi delle parole chiave sopra. Se hai due dichiarazioni date, invece di chiamare esplicitamente Dato due volte, puoi dire "Dato A e B".
Le basi
Questo esempio analizzerà la struttura di base di un file di feature Cucumber in Gherkin. I file di caratteristiche utilizzano più parole chiave nella sintassi di base.
Vediamo le parole chiave di base:
- Funzionalità: questa parola chiave indica che quanto segue è una descrizione o un nome di base della funzionalità testata o documentata.
- Scenario: questa parola chiave rappresenta il nome o la descrizione di base di uno scenario particolare che verifica la funzione.
- Data questa parola chiave rappresenta un determinato passo, o presupposto che si presume prima di continuare. Nel paradigma Disponi, Agita, Assert, indicato rappresenta "Disponi".
- Quando questa parola chiave rappresenta un passo quando, o il comportamento che deve essere affermato contro. Nel paradigma Disponi, Agisci, Assert, indicato rappresenta "Act".
- Quindi questa parola chiave rappresenta un passaggio, o in altre parole, il passo in cui viene convalidato il risultato di un comportamento. Nel paradigma Disponi, Agisci, Assert, indicato rappresenta "Assert".
- E questa parola chiave viene utilizzata insieme a una qualsiasi delle parole chiave sopra. Se hai due dichiarazioni date, invece di chiamare esplicitamente Dato due volte, puoi dire "Dato A e B".
- Ma questa parola chiave viene utilizzata insieme a Given , When e Then per indicare che qualcosa non dovrebbe accadere. Quindi A But not B.
Tutte le parole chiave devono essere su una nuova riga e devono essere la prima parola su una nuova riga per essere riconosciute dal parser Gherkin. Le parole chiave Feature e Scenario devono avere subito due punti, come nell'esempio seguente. Dato, quando, poi, e E non richiedono due punti.
Oltre alle parole chiave, puoi scrivere descrizioni e commenti. Le descrizioni si verificano dopo la parola chiave ma sulla stessa riga, dove i commenti si presentano sulle linee sotto le parole chiave. Quando si scrivono commenti di feature, è consuetudine fornire regole esplicite che definiscano i bordi e le condizioni che conducono a diversi esiti di comportamenti.
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
Passi parametrizzati
Durante la scrittura di Gherkin, ci possono essere momenti in cui si desidera parametrizzare i passaggi per la riusabilità da parte dell'ingegnere che sta implementando i piani di test. I passaggi ricevono i parametri attraverso i gruppi di acquisizione di espressioni regolari. ( Nota di progettazione: se non si dispone di parametri di corrispondenza per ciascun gruppo di acquisizione nell'espressione regolare, è possibile che venga generata una "CucumberException: mismatch di Arity") Nell'esempio seguente, abbiamo deciso di includere gli argomenti tra virgolette doppie come accettare gli interi come argomenti.
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
Feature Background
Come avrai notato nell'esempio sopra, stiamo riscrivendo lo stesso passo più volte:
Given the user is on the login page
Questo può essere eccezionalmente noioso, specialmente se abbiamo più di un dato passaggio che viene riutilizzato. Gherkin fornisce una soluzione per questo dandoci un'altra parola chiave con cui lavorare: Background:.
La parola chiave background serve per eseguire i passaggi dichiarati al di sotto di esso prima di ogni scenario nella Feature. Assicurati di non aggiungere passaggi in background a meno che tu non sia positivo, è necessario per ogni scenario. Come le altre parole chiave, Sfondo è seguito da una descrizione o nome e può contenere commenti sotto di esso. Molto simile a Feature and Scenario, Background deve essere preceduto da due punti.
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
In alcuni casi è possibile ripetere lo stesso scenario più e più volte, sostituendo gli argomenti. In questo caso, Gherkin fornisce diverse nuove parole chiave per soddisfare questa situazione, Profilo Scenario: ed Esempio:. La parola chiave Scenario Outline indica a Cucumber che lo scenario verrà eseguito più volte sostituendo gli argomenti da un elenco. La parola chiave Examples viene chiamata prima che l'elenco sia esplicitamente notificato. Gli argomenti per i contorni degli scenari devono essere racchiusi tra parentesi angolari. Nell'esempio seguente, si noti che i nomi degli argomenti racchiusi tra parentesi angolari corrispondono ai nomi delle colonne elencati in Esempi. Ogni colonna è separata da barre verticali, con i nomi delle colonne sulla prima riga.
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 |
tag
Ai fini della documentazione, è possibile filtrare i piani di test o gli scenari per categorie. Gli sviluppatori potrebbero voler eseguire test basati su quelle stesse categorie. Gherkin consente di classificare le funzionalità e i singoli scenari tramite l'utente dei tag. Nell'esempio seguente, si noti quanto sopra la parola chiave Feature è il tag "@Automation". Gherkin riconosce questo come un tag dall'utente del simbolo "@". In questo esempio, l'ingegnere vuole chiarire che questi test sono utilizzati per l'automazione, dove non tutti i test sono automatizzati, alcuni test devono essere eseguiti dal QA manuale.
Si noti inoltre che il tag @Production è stato aggiunto allo scenario testing user lock out. In questo esempio, questo è perché questo scenario è attivo solo nell'ambiente di produzione dell'applicazione. Gli sviluppatori non vogliono che i loro account sandbox vengano bloccati durante lo sviluppo. Questo tag consente loro di far rispettare questo test solo con l'ambiente di produzione.
Infine, lo Scenario Outline ha il tag @Staging. Ai fini di questo esempio, questo è dovuto al fatto che gli account utilizzati sono account di gestione temporanea e non funzioneranno negli altri ambienti. Come il tag @Production, ciò garantisce che questi test vengano eseguiti solo nell'ambiente di gestione temporanea.
Questi sono solo alcuni esempi di dove, come e perché potresti usare i tag. In definitiva questi tag avranno significato per te e per gli sviluppatori e possono essere qualsiasi cosa e utilizzati per categorizzare come ritieni opportuno.
@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 |
Punte di cetriolino
- Ogni scenario verifica un comportamento
- Gli scenari sono scritti in modo dichiarativo
- Evita dettagli accidentali all'interno dello scenario
- Ometti l'ovvio
- Evita i passaggi congiuntivi
- Mantieni i tuoi scenari brevi
- Non avere molti scenari nella stessa funzione
- Usa nomi di scenari descrittivi
- Ne hai solo uno Quando passo
- Utilizzare il "dovrebbe" in Quindi passaggi