Jakie są najbardziej zaawansowane frameworki i narzędzia dostępne dla Pythona do ćwiczenia rozwoju opartego na zachowaniu? Szczególnie znalezienie podobnych narzędzi, jak rspec i mocha dla ruby, byłoby świetne.
Jakie są najbardziej zaawansowane frameworki i narzędzia dostępne dla Pythona do ćwiczenia rozwoju opartego na zachowaniu? Szczególnie znalezienie podobnych narzędzi, jak rspec i mocha dla ruby, byłoby świetne.
Odpowiedzi:
Ian Bicking zaleca używanie doctest do projektowania opartego na zachowaniu:
Osobiście używam makiety nosa i voidspace w stylu projektowania opartego na zachowaniu. W szczególności wtyczka specyfikacji dla nosa jest doskonała dla BDD.
Sałata znaczy być narzędziem podobnym do ogórka dla Pythona: http://lettuce.it/
Możesz pobrać źródło na github.com/gabrielfalcao/lettuce
Naprawdę polecam zachowanie .
Szukając klonu Cucumber dla Pythona, zacząłem używać sałaty, ale okazało się, że jest to dość niezdarnie zaprojektowana replika. Bardzo Unpythonic.
Wtedy odkryłem, jak zachowuję się i byłem z tego naprawdę zadowolony.
Polecam skorzystać z zestawu narzędzi opracowanych, aby pomóc programistom w praktyce BDD i TDD. Ten zestaw narzędzi składa się z: pycukes , specloud , ludibrio i should-dsl .
Powinien DSL da ci oczekiwania podobne do RSpec. Wszystko, co możesz zrobić z RSpec Expectation API, robi też should-dsl. Możesz pobrać najnowszą wersję z Github .
SpecLoud pomaga w uruchamianiu unittestów podobnych do BDD. Możesz go zainstalować, wykonując
pip install specloud
Ludibrio to biblioteka do testowych gier podwójnych (Mocks, Stubs i Dummies). Zainstaluj go przez
pip install ludibrio
I PyCukes jest głównym narzędziem BDD. Będzie uruchamiać scenariusze itp. Ponownie,
pip install pycukes
Aby uzyskać więcej informacji, przeczytaj dokumentację narzędzi w PyPi .
Świetny post i odpowiedzi. Chciałem tylko zaktualizować, aby uwzględnić Odświeżenie na tej liście, ponieważ przeczytałem, że pycukes zostało wycofane. Dobry post o używaniu BDD i Django z Freshen jest tutaj .
Możesz użyć „sure” do wyrażania asercji (tak jak w RSpec)
Projekt Pyccuracy to próba dostarczenia specyficznego dla domeny języka dla BDD w Pythonie.
W przeciwieństwie do doctest, który działa na poziomie API, koduje operacje wyższego poziomu, takie jak ładowanie strony internetowej i wysyłanie formularza. Nie używałem tego, ale wygląda nieco obiecująco, jeśli tego właśnie szukasz.
Bardzo lubię Pyccuracy . Obecnie wdrażam go w średniej wielkości projekcie.
Wypróbuj Pyspecs . Uczynienie testów łatwymi do odczytania i ciągłe uruchamianie podczas programowania było dwoma z moich głównych celów podczas tworzenia tego projektu.
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)
Ja prawdopodobnie całkowicie brakuje punktu, ale co mam zachowane w oryginalnym papierze BDD , że BDD właśnie TDD przepakowane podkreślić pewne najlepszych praktyk.
Jeśli moja interpretacja jest poprawna, możesz uzyskać framework BDD po prostu zmieniając nazwy metod w dowolnej implementacji xUnit . Więc po prostu idź dalej i użyj standardowej biblioteki unittest .
EDYCJA: Szybki Google włączył moduł Zachowania w Cheese Shop . Dalsze poszukiwania BDD tam nie znalazły nic innego.