web-dev-qa-db-fra.com

Pratiquer BDD avec python

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.

131
JtR

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.

37
Ryan

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

48
user333958

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.

46
Gregarious

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 .

29
Douglas Camata

Excellent message et réponses. Je voulais juste mettre à jour pour inclure Freshen dans cette liste pendant que je lis pycukes est interrompu. Un bon article sur l'utilisation de BDD et Django avec Freshen est ici .

11
Steve

Vous pouvez utiliser "sure" pour les assertions expressives (comme dans RSpec)

9
Gabriel Falcão

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.

8
Michael Hanson

J'aime beaucoup Pyccuracy . Je l'implémente sur un projet de taille moyenne ces jours-ci.

6
Refael Ackermann

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.

Code de test:

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)

Sortie console:

# 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)
6
mdwhatcott

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.

4
ddaa