Какие самые продвинутые фреймворки и инструменты доступны для python для практики Behavior Driven Development? Было бы здорово найти такие инструменты, как rspec и mocha для ruby.
Какие самые продвинутые фреймворки и инструменты доступны для python для практики Behavior Driven Development? Было бы здорово найти такие инструменты, как rspec и mocha для ruby.
Ответы:
Ян Бикинг рекомендует использовать doctest для дизайна, ориентированного на поведение:
Лично я предпочитаю использовать нос и пустое пространство в стиле дизайна, ориентированного на поведение. В частности, специальный плагин для носа отлично подходит для BDD.
Салат означает быть похожим на огурец инструментом для python: http://lettuce.it/
Вы можете получить источник на github.com/gabrielfalcao/lettuce
Очень рекомендую вести себя хорошо .
В поисках клона огурца для Python я начал использовать салат, но нашел его довольно неуклюжей копией. Очень непифонично.
Потом я обнаружил, что веду себя хорошо, и был очень доволен этим.
Я рекомендую вам использовать набор инструментов, разработанный для помощи программистам в практике BDD и TDD. Этот набор инструментов состоит из: pycukes , specloud , ludibrio и should-dsl .
Should-DSL оправдает ожидания, подобные RSpec. Все, что вы можете сделать с API ожидания RSpec, следует также и в случае с. Вы можете скачать последнюю версию с Github .
SpecLoud поможет вам в проведении BDD-подобных юнит-тестов. Вы можете установить его, выполнив
pip install specloud
Ludibrio - это библиотека для тестовых двойников (Mocks, Stubs и Dummies). Установите его через
pip install ludibrio
А PyCukes - это основной инструмент для BDD. Он запустит сценарии и т. Д. Опять же,
pip install pycukes
Для получения дополнительной информации прочтите документацию по инструментам на PyPi .
Вы можете использовать "sure" для выразительных утверждений (как в RSpec)
Проект Pyccuracy - это попытка предоставить язык BDD, специфичный для предметной области, в Python.
В отличие от doctest, который работает на уровне API, он кодирует операции более высокого уровня, такие как загрузка веб-страницы и отправка формы. Я не использовал это, но это выглядит несколько многообещающе, если это то, что вы ищете.
Мне очень нравится Пиккураци . В настоящее время я реализую это в проекте среднего размера.
Попробуйте pyspecs . Создание тестов, легко читаемых и постоянно выполняемых в процессе разработки, было двумя из моих главных целей при создании этого проекта.
from pyspecs import given, when, then, and_, the, this
with given.two_operands:
a = 2
b = 3
with when.supplied_to_the_add_function:
total = a + b
with then.the_total_should_be_mathmatically_correct:
the(total).should.equal(5)
with and_.the_total_should_be_greater_than_either_operand:
the(total).should.be_greater_than(a)
the(total).should.be_greater_than(b)
with when.supplied_to_the_subtract_function:
difference = b - a
with then.the_difference_should_be_mathmatically_correct:
the(difference).should.equal(1)
# run_pyspecs.py
| • given two operands
| • when supplied to the add function
| • then the total should be mathmatically correct
| • and the total should be greater than either operand
| • when supplied to the subtract function
| • then the difference should be mathmatically correct
(ok) 6 passed (6 steps, 1 scenarios in 0.0002 seconds)
Я, вероятно, полностью упускаю суть, но то, что я сохранил из оригинального документа BDD, заключалось в том, что BDD был просто переупакован TDD, чтобы подчеркнуть некоторые передовые практики.
Если моя интерпретация верна, вы можете получить среду BDD, просто переименовав методы в любой реализации xUnit . Так что просто используйте стандартную библиотеку unittest .
РЕДАКТИРОВАТЬ: быстрый Google обнаружил модуль поведения в магазине сыров . Дальнейшие поиски BDD там больше ничего не нашли.