Quels sont les cadres et les outils les plus avancés disponibles pour python pour pratiquer le développement basé sur le comportement? Surtout, trouver des outils similaires à rspec et mocha pour Ruby serait formidable.
Ian Bicking recommande d'utiliser doctest pour la conception axée sur le comportement:
Personnellement, j'ai tendance à utiliser nose et voidspace mock dans un style de conception axé sur le comportement. Plus précisément, la spécification plugin pour nose est excellente pour BDD.
La laitue signifie être un outil de type concombre pour python: http://lettuce.it/
Vous pouvez récupérer la source sur github.com/gabrielfalcao/lettuce
Je recommande vraiment 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 se comporter, et j'en ai été très satisfait.
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 de type RSpec. Tout ce que vous pouvez faire avec l'API d'attente RSpec, devrait le faire également. Vous pouvez récupérer la dernière version de Github .
SpecLoud vous aide à exécuter des tests de type BDD. Vous pouvez l'installer en faisant
pip install specloud
Ludibrio est une bibliothèque de tests doubles (Mocks, Stubs and Dummies). Installez-le via
pip install ludibrio
Et PyCukes est l'outil principal pour 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 code des opérations de niveau supérieur telles que le chargement d'une page Web et la soumission d'un formulaire. Je ne l'ai pas utilisé mais il semble quelque peu prometteur si c'est ce que vous recherchez.
J'aime beaucoup Pyccuracy . Je l'implémente sur un projet de taille moyenne ces jours-ci.
Essayez pyspecs . Rendre les tests faciles à lire et constamment exécutés pendant le développement était deux de mes principaux objectifs dans 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 était que BDD était juste TDD reconditionné pour souligner quelques bonnes 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 la bibliothèque standard nittest .
EDIT: Un rapide google a révélé un module Comportement dans le Fromagerie . En outre recherche pour BDD, il n'a rien trouvé d'autre.