2015-05-14 4 views
5

Gibt es überhaupt wo können wir If/Else-Konzept in Feature-Datei verwenden? Zum Beispiel:ist, wenn sonst Konzept in Feature-Datei (Gurken-Sprache) verfügbar?

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

Nein, Sie in Ihrem Beispiel beschreiben zwei Szenarien in einem. Sie sollten getrennt sein. – jmccure

Antwort

7

Nicht, dass ich bewusst bin. Gurke (und Gurke) werden am besten verwendet, wenn sie diskrete Geschäftsfälle spezifizieren und wiederholbar sein sollten, sonst werden sie schwer zu folgen und zu testen. Es sieht so aus, als hättest du hier mindestens zwei Geschichten:

4

Nein, du kannst nicht und du solltest nicht. Feature-Dateien dienen dem Geschäftsverhalten, nicht der Programmierung.

Von Ihrem Szenario denke ich, dass Sie versuchen, mit unterschiedlichem Verhalten umzugehen, abhängig davon, ob Sie registriert sind oder nicht. Um dies zu tun, würden Sie zwei Szenarien schreiben

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

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

Beachten Sie, wie diese Szenarien nicht beschreiben, "wie" etwas getan wird. Alles wie "Ich klicke auf Foo" in Feature ist ein Geruch und sollte vermieden werden.

-1

Sie können Parameter in Feature-Datei verwenden und das If else im Code basierend auf dem übergebenen Parameter implementieren.

0

Was ist, wenn wir Gherkin in einer Rauch-Test-Situation verwenden und wir sicherstellen müssen, dass etwas in der Datenbank nur mit der Benutzeroberfläche vorhanden ist?

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 

Die Weiterverwendung des gleichen Then Schritt ist zweimal im Wesentlichen eine if-else, dass meine Box machen wird sicher vorhanden, so dass ich meine anderen Tests im Rauch-Test-Suite, die eine Box benötigen laufen kann.

Aber das ist abhängig von der Lage, die Szenario-Ausführung in den Testläufer zu stoppen oder etwas fremd wie tun:
ScenarioContext.Current["TestPassed"] = true;
und dann in jedem des Schrittes
if(ScenarioContext.Current.Get<bool>("TestPassed")) return;