2015-05-14 41 views
5

Esiste comunque la possibilità di utilizzare if/else concept in feature file? Ad esempio:fa se altro concetto disponibile nel file di caratteristiche (linguaggio gherkin)?

Scenario: User should be able to check login page 
    Given I am on login page 
    When I click on SignIn button 
    Then I should be in home page 
    If yes 
    Then I will create a new profile 
    Else 
    Then I will logout from page 
+1

No, nel tuo esempio si stanno descrivendo due scenari in uno. Dovrebbero essere separati. – jmccure

risposta

7

Non che io sappia. Il cetriolino (e il cetriolo) vengono utilizzati al meglio quando specificano casi aziendali discreti, e dovrebbero essere ripetibili, altrimenti diventano difficili da seguire e testare. Sembra che tu abbia almeno due storie qui:

Scenario: A new user should be asked to sign in 
    Given I am a new user 
    And I navigate to the login page 
    When I click on SignIn button 
    I should not be able to get to the home page 

Scenario: An existing user should be able to log in 
    Given I am an existing user 
    And I navigate to the login page 
    And I submit valid credentials 
    When I click on SignIn button 
    I should be taken to the home page 
4

No non puoi e non dovresti. I file di caratteristiche sono per comportamento aziendale, non per programmazione.

Dal tuo scenario, penso che stai cercando di gestire un comportamento diverso, a seconda che tu sia registrato o meno. Per fare questo scrivere due scenari

Given I am registered 
When I 
Then I should .... 

Given I am a new user 
When I ... 
Then I should be asked to register 

Nota come questi scenari non descrivono "come" viene fatto qualcosa. Qualcosa come "I click on foo" in feature è un odore e dovrebbe essere evitato.

-1

È possibile utilizzare il parametro nel file delle caratteristiche e implementare l'If else nel codice in base al parametro passato.

0

Che dire se stiamo utilizzando Gherkin in una situazione di tipo test del fumo e abbiamo bisogno di garantire che qualcosa esista nel database usando solo l'interfaccia utente?

Scenario: I need to create one (and only one) Box before I run the rest of my smoke tests 
Given I login as Admin 
When I am on the Box list Page 
Then the test passes if the Box named "QA SmokeTest" exists 
When I click the Add New Box Button 
And enter the details for a New Box 
And press Save New Box 
Then the test passes if the Box named "QA SmokeTest" exists 

Il riutilizzo dello stesso Then passo è due volte essenzialmente un if-else, che farà in modo che la mia sicurezza esista in modo che possa funzionare i miei altri test nella suite di test fumo che richiedono una scatola.

Ma questo dipende da essere in grado di fermare l'esecuzione scenario nel test runner o fare qualcosa di estraneo, come:
ScenarioContext.Current["TestPassed"] = true;
e poi in ciascuna delle fasi
if(ScenarioContext.Current.Get<bool>("TestPassed")) return;