Які найсучасніші рамки та інструменти, доступні для python для практичного розвитку поведінки? Особливо знайти подібні інструменти, як rspec та mocha для рубіну, було б чудово.
Які найсучасніші рамки та інструменти, доступні для python для практичного розвитку поведінки? Особливо знайти подібні інструменти, як rspec та mocha для рубіну, було б чудово.
Відповіді:
Ян Бікінг рекомендує використовувати doctest для дизайну, керованого поведінкою:
Я особисто схильний використовувати глузування носа та порожнечі у стилі дизайну, керованого поведінкою. Зокрема, специфікаційний плагін для носа відмінно підходить для BDD.
Салат означає бути огірковим інструментом для пітона: http://lettuce.it/
Ви можете схопити джерело на веб-сайті github.com/gabrielfalcao/lettuce
Я дуже рекомендую вести себе .
Шукаючи клона Огірка для Python, я почав використовувати салат, але виявив це досить незграбно розробленою копією. Дуже непітонічно.
Тоді я виявив, що поводяться, і був дуже задоволений цим.
Я рекомендую вам використовувати набір інструментів, розроблених для допомоги програмістам у практиці BDD та TDD. Цей набір інструментів складається з: pycukes , specloud , ludibrio і Should -dsl .
If-DSL дасть вам очікування, схожі на RSpec. Все, що ви можете зробити з API очікування RSpec, також повинен-dsl. Ви можете схопити останнюверсію від Github .
SpecLoud допомагає вам у виконанні BDD-подібних unittests. Ви можете встановити його, зробивши
pip install specloud
Людібріо - це бібліотека для тестових пар (Макети, Стуби та манекени). Встановити через
pip install ludibrio
А PyCukes - головний інструмент для BDD. Він запустить сценарії тощо. Знову ж таки,
pip install pycukes
Для отримання додаткової інформації, будь ласка, прочитайте документацію щодо інструментів на PyPi .
Ви можете використовувати "sure" для виразних тверджень (як і в RSpec)
Проект Pyccuracy - це спроба забезпечити для BDD мови Python мову, що відповідає специфіці домену.
На відміну від doctest, який працює на рівні API, він кодує операції вищого рівня, такі як завантаження веб-сторінки та подання форми. Я не використовував його, але це виглядає дещо перспективно, якщо саме це ви шукаєте.
Мені дуже подобається Pyccuracy . Я реалізую це над середнім проектом сьогодні.
Спробуйте 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 . Тому просто продовжуйте використовувати стандартний тест бібліотеки .
EDIT: Швидкий google з’явив модуль Behavior в Cheese Shop . Подальші пошуки BDD там не знайшли нічого іншого.