Если вы хотите управлять вещами в командной строке, то вы делаете то, что Tymoteusz Paul предлагает в другом ответе. Вкратце, вы можете использовать любой тег, который хотите пометить своими функциями и сценариями, а затем использовать --tags
для выбора или отмены выбора функций и сценариев на основе тегов, которые вы использовали. В документации приведен пример заметок медленных сценариев с помощью @slow
, а затем с использованием behave --tags=slow
для запуска только медленных тестов или с использованием behave --tags=-slow
, чтобы исключить медленные тесты. Чтение documentation рекомендуется для изучения того, что позволяет использовать синтаксис --tags
.
По методу выше, вы можете использовать @skip
и делать behave --tags=-skip
. Это исключает все, что помечено @skip
, но раздражает необходимость включать дополнительный аргумент при каждом вызове. Не удалось @skip
только сам по себе сказать Пропустить, не требуя каких-либо аргументов в командной строке?
Если вы хотите @skip
тега, который будет пропускать функции и сценарии, отмеченные с ней, не требуя дополнительный аргумент, то, как из BEHAVE 1.2.5, вы должны построить функциональность в файл environment.py
. Отрицательно what this answer предлагает, это не встроенный. Добавим функциональность, как это:
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.
Аргумент к .skip
методов является причиной пропуска.
Я использую .effective_tags
для тестирования тегов в сценариях. Поле .effective_tags
наследует теги, которые были установлены в этой функции. В данном случае это не имеет значения, потому что если функция имела @skip
, то принудительно сценарии в ней будут пропущены уже. Тем не менее, я предпочитаю придерживаться общего принципа, согласно которому проверка тегов в сценариях должна использовать .effective_tags
, так что наследование тегов работает.
Подождите! Разве tutorial не говорит, что встроен @skip
?
Нет, учебное пособие немного искажает, потому что оно дает список, который показывает @skip
рядом с @wip
.@wip
встроен, поэтому @skip
встроен слишком правильно? Нет, они находятся в списке «Предопределенные или часто используемые теги». @skip
просто «часто используется». Он часто используется, потому что с помощью слова «пропустить» информативный способ отметить что-то как пропущенное. Это не означает, что тег встроен в Behave.
Неверно. Я просто попытался добавить @skip в один из моих сценариев, и он был проигнорирован Behave 1.2.5, как и ожидалось. '@ wip' предопределен, как указано [здесь] (https://pythonhosted.org/behave/tutorial.html#controlling-things-with-tags). Тем не менее, я не нахожу упоминания о '@ skip' в любом месте. – Louis
Простите, что пропустить работает только для сценариев. Таким образом, вы можете поместить тег @skip, чтобы пропустить сценарий, но не всю функцию. Подробности режима: https://jenisys.github.io/behave.example/tutorials/tutorial11.html – shakyaabiral
В учебнике написано «предопределенные или часто используемые теги». '@ skip' и' @ slow' не являются «предопределенными». Они «часто используются». Другими словами, вы можете использовать тег '@ skip', если хотите, который вы можете контролировать с помощью опции' --tags' *, как и любой другой тег *, что является [принятым ответом] (http://stackoverflow.com/a/36518200/1906307). Вы можете пропустить сценарии с тегом с именем '@ skip' или' @ potato' или '@ asdf'. '@ skip' более понятен, но не имеет особого статуса. – Louis