Welches sind die fortschrittlichsten Frameworks und Tools, die für Python zum Üben der verhaltensgesteuerten Entwicklung verfügbar sind? Besonders ähnliche Werkzeuge wie rspec und Mokka für Rubin zu finden, wäre großartig.
Welches sind die fortschrittlichsten Frameworks und Tools, die für Python zum Üben der verhaltensgesteuerten Entwicklung verfügbar sind? Besonders ähnliche Werkzeuge wie rspec und Mokka für Rubin zu finden, wäre großartig.
Antworten:
Ian Bicking empfiehlt die Verwendung von doctest für verhaltensorientiertes Design:
Ich persönlich neige dazu, Nasen- und Leerraum-Mock in einem verhaltensorientierten Designstil zu verwenden. Insbesondere das Spezifikations- Plugin für die Nase eignet sich hervorragend für BDD.
Kopfsalat bedeutet, ein gurkenähnliches Werkzeug für Python zu sein: http://lettuce.it/
Sie können die Quelle unter github.com/gabrielfalcao/lettuce abrufen
Ich empfehle wirklich, sich zu benehmen .
Auf der Suche nach einem Gurkenklon für Python habe ich angefangen, Salat zu verwenden, fand ihn aber als ziemlich ungeschickt gestaltete Nachbildung. Sehr unpythonisch.
Dann entdeckte ich Verhalten und war sehr zufrieden damit.
Ich empfehle Ihnen, eine Reihe von Tools zu verwenden, die entwickelt wurden, um Programmierern beim Üben von BDD und TDD zu helfen. Dieses Tool-Set besteht aus: Pycukes , Specloud , Ludibrio und Should-DSL .
Sollte-DSL wird Ihnen RSpec-ähnliche Erwartungen geben. Alles, was Sie mit der RSpec Expectation API tun können, sollte auch-dsl tun. Sie können die neueste Version von Github herunterladen .
SpecLoud hilft Ihnen beim Ausführen von BDD-ähnlichen Unittests. Sie können es installieren, indem Sie
pip install specloud
Ludibrio ist eine Bibliothek für Testdoppel (Mocks, Stubs und Dummies). Installieren Sie es über
pip install ludibrio
Und PyCukes ist das Hauptwerkzeug für BDD. Es werden die Szenarien usw. ausgeführt.
pip install pycukes
Weitere Informationen finden Sie in der Tooldokumentation bei PyPi .
Sie können "sicher" für ausdrucksstarke Aussagen verwenden (genau wie in RSpec).
Das Pyccuracy-Projekt ist ein Versuch, eine domänenspezifische Sprache für BDD in Python bereitzustellen.
Im Gegensatz zu doctest, das auf API-Ebene funktioniert, werden Vorgänge auf höherer Ebene wie das Laden einer Webseite und das Senden eines Formulars codiert. Ich habe es nicht benutzt, aber es sieht etwas vielversprechend aus, wenn Sie danach suchen.
Ich mag Pyccuracy sehr. Ich implementiere es derzeit in einem mittelgroßen Projekt.
Probieren Sie Pyspecs aus . Tests leicht lesbar zu machen und während der Entwicklung ständig auszuführen, waren zwei meiner Hauptziele bei der Erstellung dieses Projekts.
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)
Ich vermisse den Punkt wahrscheinlich völlig, aber was ich vom ursprünglichen BDD-Papier beibehalten habe, war, dass BDD nur TDD neu verpackt wurde, um einige Best Practices hervorzuheben.
Wenn meine Interpretation korrekt ist, können Sie ein BDD-Framework erhalten, indem Sie die Methoden in jeder xUnit- Implementierung umbenennen . Verwenden Sie einfach die unittest der Standardbibliothek .
BEARBEITEN: Ein schnelles Google hat ein Verhaltensmodul im Cheese Shop aufgetaucht . Bei der weiteren Suche nach BDD wurde dort nichts anderes gefunden.