2012-06-11 17 views
6

Sono nuovo in SpecFlow e sto configurando un numero di funzionalità/scenari di test per utenti autenticati di diversi tipi di ruolo. Lo sto facendo tramite l'automazione del browser con Coypu.Equivalente di sfondo per l'esecuzione di scenari

Quindi ho un passaggio in background nella funzione per configurare il log in di un utente in quel tipo di ruolo.

Background: 
    Given I am logged in as a ...some role I'm interested in... 

Dopo ogni scenario nel film, voglio accedere di nuovo fuori l'utente (altrimenti il ​​registro al punto in background non funziona per lo scenario successivo - Sto mantenendo la stessa istanza del browser nutria aperto tra le prove).

Ho trovato l'annotazione [AfterScenario] che potevo usare, ma dato che questo è presente in tutti gli scenari in tutte le funzionalità (per quanto ho capito ...), ciò influenzerebbe gli scenari che dicono per gli utenti non autenticati.

Potrei utilizzare lo [AfterScenario] con [Scope(Feature="Some Feature")] Credo, ma sono ansioso di dover effettuare il log in/out prima e dopo un numero intero di funzionalità che sto testando, e non sono propenso a specificare tutti questi con un mucchio di corde magiche.

quindi mi chiedo se c'è qualcosa che posso mettere nel file Feature, sorta di l'equivalente di sfondo, ma per eseguire dopo ogni scenario in tale funzione. (O in alternativa, forse il modo in cui sto effettuando l'accesso/uscita per ogni scenario non è il modo migliore per fare le cose?)

risposta

10

Non esiste una funzionalità "Postground" in specflow, tuttavia è possibile ottenere qualcosa di simile con tags filtering.

Nella maggior parte dei nostri progetti utilizziamo i tag per contrassegnare gli scenari che hanno una logica di impostazione/smontaggio specifica. Poi stiamo usando i ganci BeforeScenario/AfterScenario per eseguire la logica:

[BeforeScenario("authentication")] 
public void BeforeAuthenticationScenario() 
{ 
    //... 
}  

[AfterScenario("authentication")] 
public void AfterAuthenticationScenario() 
{ 
    //... 
} 

e si può etichettare i singoli scenari o funzioni intere:

@authentication 
Feature: Some feature requires authentication 

@authentication 
Scenario: Some scenario requires authentication 

Quindi, nel codice si avrà solo una stringa magica "autenticazione" e nelle tue funzionalità puoi applicare la logica personalizzata in modo dichiarativo con il tag.

+0

Grazie, sembra un buon modo per andare. Solo per tuo interesse, secondo te, qualcosa come "Postground" potrebbe essere una caratteristica utile o pensi che ci sia una ragione per cui non è presente? – ngm

+1

A non ci ho mai pensato, ma fino a quando non puoi farlo dal codice con i tag non è un problema enorme. È in corso una discussione per una nuova funzionalità di SpecFlow per supportare i passaggi arbitrari che vengono creati da altri passaggi, se si ottiene che è possibile anche raggruppare post e condizioni preliminari per gli scenari. – nemesv

Problemi correlati