Quels sont les frameworks et les outils les plus avancés disponibles pour Python pour pratiquer le développement piloté par le comportement? Surtout trouver des outils similaires comme rspec et moka pour ruby serait génial.
Quels sont les frameworks et les outils les plus avancés disponibles pour Python pour pratiquer le développement piloté par le comportement? Surtout trouver des outils similaires comme rspec et moka pour ruby serait génial.
Réponses:
Ian Bicking recommande d'utiliser doctest pour la conception axée sur le comportement:
Personnellement, j'ai tendance à utiliser le nez et les espaces vides dans un style de conception axé sur le comportement. Plus précisément, le plugin spec pour le nez est excellent pour BDD.
La laitue signifie être un outil semblable au concombre pour python: http://lettuce.it/
Vous pouvez récupérer la source sur github.com/gabrielfalcao/lettuce
Je recommande vraiment de se comporter .
À la recherche d'un clone de concombre pour Python, j'ai commencé à utiliser de la laitue, mais je l'ai trouvé une réplique assez maladroitement conçue. Très impythonique.
Ensuite, j'ai découvert le comportement et j'en ai été très content.
Je vous recommande d'utiliser un ensemble d'outils développés pour aider les programmeurs dans la pratique du BDD et du TDD. Cet ensemble d'outils est composé de: pycukes , specloud , ludibrio et should-dsl .
Should-DSL vous donnera des attentes similaires à celles de RSpec. Tout ce que vous pouvez faire avec l'API expectation de RSpec, should-dsl le fait aussi. Vous pouvez récupérer la dernière version de Github .
SpecLoud vous aide à exécuter des tests unitaires de type BDD. Vous pouvez l'installer en faisant
pip install specloud
Ludibrio est une bibliothèque de tests en double (Mocks, Stubs and Dummies). Installez-le via
pip install ludibrio
Et PyCukes est le principal outil de BDD. Il exécutera les scénarios, etc. Encore une fois,
pip install pycukes
Pour plus d'informations, veuillez lire la documentation des outils sur PyPi .
Vous pouvez utiliser "sure" pour les assertions expressives (comme dans RSpec)
Le projet Pyccuracy est un effort pour fournir un langage spécifique au domaine pour BDD en Python.
Contrairement à doctest, qui fonctionne au niveau de l'API, il encode des opérations de plus haut niveau telles que le chargement d'une page Web et l'envoi d'un formulaire. Je ne l'ai pas utilisé mais cela semble assez prometteur si c'est ce que vous recherchez.
Essayez pyspecs . Rendre les tests faciles à lire et à exécuter en permanence pendant le développement étaient deux de mes principaux objectifs lors de la création de ce projet.
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)
Je manque probablement complètement le point, mais ce que j'ai retenu du papier BDD original, c'est que BDD était juste un TDD reconditionné pour mettre en valeur certaines meilleures pratiques.
Si mon interprétation est correcte, vous pouvez obtenir un framework BDD simplement en renommant les méthodes dans n'importe quelle implémentation xUnit . Alors allez-y et utilisez le test unittest de la bibliothèque standard .
EDIT: Un rapide google a mis en place un module de comportement dans la fromagerie . Une recherche plus poussée de BDD n'a rien trouvé d'autre.