Хмм ну вот есть плуг для него. http://gauge-python.readthedocs.io/en/latest/
Ок, да согласен есть неофициальная поддержка, но для больших компаний важно именно официальная поддержка.
Ок, бывает, У нас тоже докер не продакшн реди оказался )
У Behave есть один большой недостаток. Он не позволяет распаралелить тесты! Вернее даже не так. Его дефолтными возможностями он этого не позволяет. Можно привлечь behave-parallel, но это такой КОСТЫЛЬ, что поработав с ним, плюнули, и пришли pytest-bdd. Behave вроде как обещают внедрить таки паралелизацию в релизе 1.3. Что это нам даёт? Написав тесты на pytest-bdd будет уже проделан большой скоуп работ. После того как behave таки внедрят паралелизацию тестов, затраты на переход к Behave будут минимальны, поскольку болшая часть уже будет написана. Надо будет только подправить сами тесты.
Тажке ещё один нюанс. Behave не правильно генерирует json который был бы совместим с Cucumber. То есть, если на дженкинсе установить плагин Cucumber report то, он просто не будет его понимать. Но это лечится через перегон файла посредствами behave2cucumber либы. И того мы имеем 2 путЯ:
- Писать сразу на Behave и надеятся что они таки реализуют распаралеливание тестов +нормальную генерацию json репорта соместимого с Cucumber report
- Писать на pytest-bdd, запорачиваясь в IDEшках связок степ дефенишенов, и после того как Behave реализуют распаралеливание перейти на него с меньшыми затратами.
Мы выбрали 2й путь.
В pytest-bdd на сколько я помню небыло возможности шарить между степами контекст
Это реализуется через request. BasePage.request.user_email = значение
Из коробки до сих пор такого нет, но это легко реализуется с помощью fixture
@pytest.fixture(scope='session')
def context():
"""Context object to store data to be passed between steps"""
return Context()
@given('test step 1')
def test1(context):
context.id = 1233
@given('test step 2')
def test1(context):
print context.id
В общем, мы тоже выбрали второй вариант, имеет только один большой плюс #behave это поддержка в #pycharm
Bdd это же не библиотеки, а стиль жизни. Вам ничего не мешает писать Стёпы/логи в стиле bdd в уже существующих тестах
log(“Given …”)
def foo = …
log(“And card is empty …”)
card.isEmpty…
Типа как в груви spock
setup: “open a database connection”
// code goes here
and: “seed the customer table”
// code goes here
and: “seed the product table”
// code goes here
Также behave обещают выпустить возможность распаралеливания тестов по фичам и сценариям в этом году (2018).
Ну будем ждать