2016-08-19 3 views
2

Ich muss das Verhalten testen, das ausgelöst wird, wenn ein Benutzer eine Menge von Aktionen mehrmals wiederholt. Ich möchte mit einem Szenario, um am Ende, die etwa wie folgt aussieht:Kann ich Schritte wiederholen, ohne die Schritte mit Gurke zu wiederholen?

Scenario: Nice way 
    Given that I am on some screen 
    When I enter something into some text field 
    And I press the Continue button 
    And I go back 
    And I repeat the previous 2 steps 5 times 
    Then the application should crash 

Anstatt ein Szenario, das wie folgt aussieht:

Scenario: Annoying way 
    Given that I am on some screen 
    When I enter something into some text field 
    And I press the Continue button 
    And I go back 
    And I press the Continue button 
    And I go back 
    And I press the Continue button 
    And I go back 
    And I press the Continue button 
    And I go back 
    And I press the Continue button 
    And I go back 
    And I press the Continue button 
    And I go back 
    Then the application should crash 

Gibt es eine standardisierte Möglichkeit, dies zu tun oder muss ich um es selbst zu implementieren?

+0

Das ist eine nette Anwendung, die Sie hier angeben ('Dann sollte die Anwendung abstürzen') – SirLenz0rlot

+0

Warum sollten Sie wollen, dass die Anwendung abstürzt? Dies scheint ein explorativer Test zu sein, kein Design-Test. Ich würde es nicht in Gurken machen. –

+0

@DaveMcNulla Die Anwendung sollte nicht abstürzen. Das Beispiel ist erfunden. –

Antwort

3

Wenn Sie die Kontrolle über den Schritt Definition Code versuchen, einen Schritt wie folgt aus -

And I press Continue button and go back 5 times 

Aufnahme die Anzahl der in der Schrittdefinition mit einer variablen und für die Anzahl der in einer Schleife bestehenden Funktionen aufrufen .

+0

Das ist eine Möglichkeit, aber es bedeutet, dass ich für jedes Szenario, in dem ich einige Schritte wiederholen muss, eine neue Schrittdefinition erstellen muss. Ich denke, das ist akzeptabel, aber nicht ideal. –

+1

Nun, Sie können sogar den Teil 'Continue' und den Teil 'Back' in Variablen abfangen und sehen, ob Sie für ähnliche Szenarien mit verschiedenen Aktionspaaren wiederverwenden können. Oder werden Sie kreativ und richten Sie eine Reihe von Aktionen ein, die Sie mit dem in Ihrem Szenario verwendeten Keyword instanziieren können. – Grasshopper

1

Um beliebige Schritte zu wiederholen, ohne einen neuen jedes Mal zu schreiben, definieren Sie diesen Schritt

When /^I repeat "([^"]*)" (\d+) times$/ do |steps, times| 
    times.to_i.times do 
    steps.split(/;\s*/).each do |step| 
     step step 
    end 
    end 
end 

und es wie folgt verwendet werden:

When I repeat "press the Continue button; go back" 5 times 

(Und nicht Semikolons in der Verwendung Namen der Schritte, die Sie wiederholen möchten.)

+0

Danke, aber ich ging mit Grasshopper's Vorschlag, weil es das Szenario lesbarer macht. –