Gibt es eine Möglichkeit, das Verhalten in einer Schritt-Implementierung zu sagen, um den aktuellen Schritt zu überspringen?
Etwas wie:
%Vor%Der Anwendungsfall ist, dass ich prüfen möchte, ob zusätzliche Software installiert ist. Wenn nicht, möchte ich, dass das komplette Szenario übersprungen wird.
Lass mich @ Barry's Antwort verbessern:
Grundsätzlich entspricht das, was er vorgeschlagen hat (d. h. scenario.mark_skipped()
):
Um genau zu sein, sieht die Quelle von mark_skipped()
folgendermaßen aus:
skip()
ist wie folgt definiert:
Ein paar Dinge:
require_not_executed=True
bedeutet, dass das Szenario nicht übersprungen werden kann, wenn ein Schritt bereits bestanden wurde, d. h. mark_skipped()
im zweiten oder späteren Schritt löst eine Ausnahme aus und überspringt anschließend alle nachfolgenden Schritte, anstatt nur die weiteren Schritte zu überspringen skip()
ermöglicht es, einen Grund für das Überspringen anzugeben, der dann als WARN
protokolliert wird. Darüber hinaus ist scenario
object im Kontext als context.scenario
verfügbar (neben context.feature
).
Letztendlich einfaches Beispiel:
%Vor%Ergebnis:
%Vor% Es hängt von dem Effekt ab, den Sie anstreben. Wenn der gewünschte Effekt bedeutet, dass ein einzelner Schritt übersprungen wird und nur dieser einzelne Schritt , bietet ab Version 1.2.5 verhalten keine API dafür. Wenn Sie in behave/model.py
suchen, sehen Sie, dass für die Klasse skip
keine Methoden mark_skipped
und Step
vorhanden sind. Dafür gibt es keinen alternativen Mechanismus.
Wenn der gewünschte Effekt für den Schritt und das gesamte Szenario als übersprungen markieren soll, dann ist dies möglich. Wenn Sie damit einverstanden sind, dann wird der Antwort von Barry ist wirklich, was Sie tun mussten, bevor 1.2.5: Verwenden Sie before_feature
, um die Szenarien zu scannen und Markieren Sie sie als übersprungen, bevor Sie sie ausführen. Dies würde effektiv Ihren Schritt als übersprungen markieren.
Wie die Antwort von m4tx zeigt , können Sie ab Verhalten 1.2.5 context.scenario.skip
von der Implementierungsfunktion eines Schritts aufrufen Überspringen Sie das Szenario. Dies wiederum wird jedoch das gesamte Szenario als übersprungen markieren. Es ist wahr, dass die früheren Schritte ausgeführt wurden und eine Chance hatten, fehlzuschlagen, aber wenn das Szenario in der Anzahl der übersprungenen Szenarien erscheint und alle seine Schritte (einschließlich derjenigen, die vor der Der Schritt namens context.scenario.skip
) erscheint in der Liste der übersprungenen Schritte. Darüber hinaus werden die Schritte, die dem Schritt folgen, der context.scenario.skip
aufgerufen hat, überhaupt nicht ausgeführt.
Tags und Links python python-behave