Позвольте мне улучшить @ ответ Барри:
В принципе, то, что он предложил (т.е. scenario.mark_skipped()
) равна:
scenario.skip(require_not_executed=True)
Чтобы быть точным, источник mark_skipped()
«s выглядит следующим образом:
def mark_skipped(self):
"""Marks this scenario (and all its steps) as skipped.
Note that this method can be called before the scenario is executed.
"""
self.skip(require_not_executed=True)
assert self.status == "skipped", "OOPS: scenario.status=%s" % self.status
skip()
определяется следующим образом:
def skip(self, reason=None, require_not_executed=False)
Несколько вещей:
require_not_executed=True
означает, что сценарий не может быть пропущен, если какой-либо шаг уже пройден, т.е. mark_skipped()
во втором или более позднем этапе будет сгенерировано исключение, а затем пропустить все шаги, потом, вместо того, чтобы просто пропуская дальнейшие шаги
skip()
позволяет указать причину пропуска, которая затем регистрируется как WARN
.
Кроме того, scenario
объект доступен в контексте, как context.scenario
(наряду с context.feature
).
В конечном счете, простой пример:
@given("test photos in upload directory")
def step_impl(context):
if not connection_available():
context.scenario.skip(reason='internet connection is unavailable')
Результат:
Skipped: skipped
WARNING:behave:SKIP Scenario Retrieving uploaded photo details: internet connection is unavailable
В интересах тех, кто по-прежнему находится на 1.2.4 (например, я был до нескольких минут назад): код из кодовой базы behave, который указан в этом ответе, равен 1.2.5. – Louis
Есть ли способ распечатать захваченные записи для пропущенных сценариев? Кажется, что предупреждения печатаются только в случае сбоя сценария (т. Е. Размещение 'assert False' после' script.skip() 'показывает захваченное ведение журнала). – mschrimpf
Чтобы ответить на мой собственный вопрос: я закончил тем, что добавил обработчик журнала, который регистрирует только записи, где msg начинается с «SKIP» – mschrimpf