Каковы наиболее продвинутые фреймворки и инструменты, доступные для python для практики разработки, управляемой поведением? Особенно найти похожие инструменты, как rspec и mocha для ruby, было бы здорово.
Практика BDD с python
Ответ 1
Ian Bicking рекомендует использовать doctest для дизайна с учетом поведения:
Я лично предпочитаю использовать nose и voidspace mock в стиле дизайна, ориентированном на поведение. В частности, плагин spec для носа отлично подходит для BDD.
Ответ 2
Салат - это инструмент, похожий на огурец для python: http://lettuce.it/
Вы можете захватить источник в github.com/gabrielfalcao/lettuce
Ответ 3
Я действительно рекомендую behave.
Ищем клоун Cucumber для Python, я начал использовать салат, но нашел это довольно неуклюже разработанную реплику. Очень непитонический.
Затем я обнаружил, что вел себя и был очень доволен этим.
Ответ 4
Я рекомендую вам использовать набор инструментов, разработанных для помощи программистам в практике BDD и TDD. Этот набор инструментов состоит из: pycukes, specloud, ludibrio и should-dsl.
should-dsl даст вам ожидания, подобные RSpec. Все, что вы можете сделать с API-интерфейсом RSpec, должно -dsl тоже. Вы можете захватить lastversion из Github.
specloud помогает вам запускать BIT-подобные unittests. Вы можете установить его, выполнив
pip install specloud
ludibrio - это библиотека для тестовых двойников (Mocks, Stubs и Dummies). Установите его через
pip install ludibrio
И pycukes является основным инструментом для BDD. Он будет запускать сценарии и т.д. Опять же,
pip install pycukes
Для получения дополнительной информации ознакомьтесь с документацией по инструментам PyPi.
Ответ 5
Отличная почта и ответы. Просто хотел обновить, включив Freshen в этот список, так как я читаю pycukes, который прекращен. Хорошая статья об использовании BDD и Django с Freshen здесь.
Ответ 6
Вы можете использовать "sure" для выразительных утверждений (как в RSpec)
Ответ 7
Проект Pyccuracy - это попытка предоставить язык BDD для языка на Python.
В отличие от doctest, который работает на уровне API, он кодирует операции более высокого уровня, такие как загрузка веб-страницы и отправка формы. Я не использовал его, но он выглядит несколькообещающим, если это то, что вы ищете.
Ответ 8
Мне нравится Pyccuracy. В настоящее время я внедряю его в проект среднего размера.
Ответ 9
Попробуйте 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)
Ответ 10
Я, вероятно, полностью упустил точку, но то, что я сохранил из оригинальной BDD-бумаги, заключалось в том, что BDD был просто TDD переупакованы, чтобы подчеркнуть некоторые лучшие практики.
Если моя интерпретация верна, вы можете получить структуру BDD, просто переименовав методы в любой xUnit. Так что просто продолжайте использовать стандартную библиотеку unittest.
EDIT: быстрый google включил модуль Behaviour в Сырный магазин. Далее поиск для BDD там ничего не нашел.