2017-12-11 4 views
0

Beispiel GherkinHowto einen Schritt Implementierung zu schreiben, die mehrere Wörter

# Gherkin snip 
When waiting for 30 seconds 
# or 
When waiting for 5 s 

I obigen Schritte in einem Schritt Definition implementieren möchten unterstützt. Ich habe die folgende Schrittimplementierung versucht.

from behave import * 
use_step_matcher("re") 

@when(u"waiting for (?P<time>\d+) (s|seconds)") 
def step_impl(context, time):  
    pass 

Bei der Ausführung dieses Ergebnis in diesem Fehler:

TypeError: step_impl() got multiple values for keyword argument 'time'

Behave es als Parameter extrahiert.

Was ist eine gute Praxis dafür?

Antwort

0

Sie können zwei Schrittdefinitionen schreiben, eine für jeden Fall. Dies wird Ihr Problem ein wenig reduzieren. Diese beiden Schritte würden dann an eine Hilfsmethode delegieren, die den tatsächlichen Aufruf ausführt.

Wenn die nächste Anforderung angezeigt wird und Sie drei Dinge im selben Schritt kombinieren möchten, wird es einfacher, die Argumente in einem Schritt abzufangen und an dieselbe Hilfsmethode zu delegieren, die Sie bereits haben.

Dies wäre wahrscheinlich mein Ansatz, wie ich dies einfacher zu verstehen und zu pflegen finden würde.

Sie möchten nicht cleveren Code schreiben. Cleverer Code ist sehr kompliziert für Ihre Zukunft, die Sie verstehen und ändern können. Ein toter einfacher Code ist immer besser.

Verwandte Themen