Wenn Sie die Dinge in der Befehlszeile steuern möchten, dann tun Sie was Tymoteusz Paul in einer anderen Antwort vorgeschlagen. Kurz gesagt, Sie können jedes Tag verwenden, das Sie für Ihre Features und Szenarien markieren möchten, und dann --tags
verwenden, um Features und Szenarien basierend auf den von Ihnen verwendeten Tags auszuwählen oder deren Auswahl aufzuheben. Die Dokumentation zeigt das Beispiel der Markierung langsamer Szenarien mit @slow
und dann behave --tags=slow
, um nur die langsamen Tests auszuführen, oder behave --tags=-slow
, um die langsamen Tests auszuschließen. Das Lesen der documentation wird empfohlen, um zu lernen, welche Syntax --tags
ermöglicht.
Mit der obigen Methode können Sie @skip
verwenden und behave --tags=-skip
tun. Dies schließt alles aus, was mit @skip
markiert ist, aber es ist ärgerlich, das zusätzliche Argument bei jedem Aufruf mit einzubeziehen. Konnte nicht @skip
nur selbst sagen Behave zu überspringen, ohne dass irgendwelche Argumente auf der Kommandozeile?
Wenn Sie einen @skip
Tag, die mit ihm gekennzeichneten Features und Szenarien überspringen werden, ohne dass ein zusätzliches Argument erforderlich ist, dann wird, wie von Behave 1.2.5, Sie müssen die Funktionalität in Ihre environment.py
Datei bauen. Im Gegensatz zu what this answer schlägt vor, es ist nicht eingebaut. Wir fügen die Funktionalität wie folgt aus:
def before_feature(context, feature):
if "skip" in feature.tags:
feature.skip("Marked with @skip")
return
# Whatever other things you might want to do in this hook go here.
def before_scenario(context, scenario):
if "skip" in scenario.effective_tags:
scenario.skip("Marked with @skip")
return
# Whatever other things you might want to do in this hook go here.
Das Argument der .skip
Methoden ist der Grund für das Überspringen.
Ich verwende immer .effective_tags
, um das Testen von Tags in Szenarien durchzuführen. Das Feld .effective_tags
erbt die Tags, die für das Feature festgelegt wurden. In dem vorliegenden Fall macht das keinen Unterschied, denn wenn das Feature @skip
hat, werden die Szenarios in diesem Fall bereits übersprungen. Ich bevorzuge es jedoch, beim allgemeinen Prinzip zu bleiben, dass Tag-Check-In-Szenarien .effective_tags
verwenden sollten, damit die Tag-Vererbung funktioniert.
Warten! Sagt die tutorial nicht, dass @skip
eingebaut ist?
Nein, das Tutorial präsentiert die Dinge ein wenig irreführend, weil es eine Liste gibt, die @skip
neben @wip
zeigt.@wip
ist eingebaut, also @skip
ist auch eingebaut? Nein, sie sind in einer Liste von "Vordefinierten oder oft verwendeten Tags". @skip
wird nur "oft verwendet". Es wird oft verwendet, weil das Wort "überspringen" auf informative Weise verwendet wird, um etwas als übersprungen zu markieren. Es bedeutet nicht, dass das Tag in Behave eingebaut ist.
Unwahr. Ich habe gerade versucht, @skip zu einem meiner Szenarien hinzuzufügen und es wurde von Behave 1.2.5 ignoriert, genau wie ich es erwartet hatte. '@ wip' ist vordefiniert wie hier [https://pythonhosted.org/behave/tutorial.html#controlling-things-with-tags] angegeben. Allerdings finde ich nirgendwo eine Erwähnung von @ skip. – Louis
Sorry, überspringen funktioniert nur für Szenarien. Sie können also @skip-Tag verwenden, um ein Szenario zu überspringen, aber nicht die gesamte Funktion. Für Details zum Modus: https://jenisys.github.io/behave.example/tutorials/tutorial11.html – shakyaabiral
Das Tutorial sagt "vordefinierte oder häufig verwendete Tags". '@ skip' und' @ slow' sind nicht "vordefiniert". Sie werden "oft benutzt". Mit anderen Worten, Sie können ein '@ skip'-Tag verwenden, wenn Sie möchten, das Sie dann mit der Option' --tags' steuern können *, genau wie jedes andere Tag *, was die [akzeptierte Antwort] (http://stackoverflow.com/a/36518200/1906307) umfasst. Sie können Szenarien mit einem Tag namens "@ skip" oder "@ potato" oder "@ asdf" überspringen. '@ skip' ist leichter verständlich, hat aber keinen besonderen Status. – Louis