Question

Quels sont les frameworks et outils les plus avancés disponibles pour Python pour la pratique du développement dirigé par le comportement? Trouver des outils similaires, tels que rspec et moka pour rubis serait une excellente idée.

Était-ce utile?

La solution

Ian Bicking recommande d'utiliser doctest pour une conception axée sur le comportement:

J'ai personnellement tendance à utiliser nose et maquette fictive dans un style de conception axé sur le comportement . Plus précisément, la spécification plugin pour le nez est excellent pour BDD.

Autres conseils

Laitue signifie être un outil semblable à un concombre pour python: http://lettuce.it/

Vous pouvez récupérer la source sur github.com/gabrielfalcao/lettuce

Je recommande vivement se comporter .

À la recherche d’un clone Cucumber pour Python, j’ai commencé à utiliser de la laitue, mais j’ai trouvé une réplique assez maladroite. Très antipythonique.

Ensuite, j'ai découvert comment se comporter et en être vraiment heureux.

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 devrait-dsl .

Should-DSL vous donnera des attentes analogues à celles de RSpec. Tout ce que vous pouvez faire avec l’API d’attente RSpec, devrait également en faire de même. Vous pouvez récupérer la dernière version de Github .

SpecLoud vous aide à exécuter des commandes de type BDD. Vous pouvez l'installer en faisant

pip install specloud

Ludibrio est une bibliothèque pour les tests en double (Mocks, Stubs et Dummies). Installez-le via

pip install ludibrio

Et PyCukes est l'outil principal de BDD. Il exécutera les scénarios, etc. Encore une fois,

pip install pycukes

Pour plus d'informations, veuillez consulter la documentation relative aux outils à l'adresse PyPi .

Excellent post et réponses. Je voulais juste mettre à jour pour inclure Rafraîchir dans cette liste à mesure que je lisais pycukes est interrompu. Un bon article sur l’utilisation de BDD et de Django avec Freshen est ici .

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

Le projet Pyccuracy vise à fournir un langage spécifique à un 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ée, mais cela semble prometteur si c'est ce que vous recherchez.

J'aime beaucoup Pyccuracy . Je la mets en œuvre sur un projet de taille moyenne ces jours-ci.

Essayez les pyspecs . Rendre les tests faciles à lire et constamment en cours de développement étaient deux de mes objectifs principaux 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 de la 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)

Je manque probablement tout à fait à l'essentiel, mais ce que j'ai retenu du document original BDD , c'est que BDD a été TDD reconditionné pour mettre en évidence certaines des meilleures pratiques.

Si mon interprétation est correcte, vous pouvez obtenir un framework BDD simplement en renommant les méthodes de n’importe quel . xUnit implémentation. Allez-y, utilisez la unittest de la bibliothèque standard. .

EDIT: un rapide Google a créé un module Behavior dans le Boutique de fromages . En outre, la recherche de BDD n'a pas trouvé autre chose.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top