examples behave python testing bdd

behave - Practicando BDD con python



bdd python (10)

El proyecto Pyccuracy es un esfuerzo por proporcionar un lenguaje específico de dominio para BDD en Python.

A diferencia de doctest, que funciona en el nivel API, codifica operaciones de nivel superior, como cargar una página web y enviar un formulario. No lo he usado pero parece algo prometedor si eso es lo que estás buscando.

¿Cuáles son los frameworks y herramientas más avanzados que hay disponibles para python para la práctica del desarrollo conducido por el comportamiento? Especialmente encontrar herramientas similares como rspec y mocha para ruby ​​sería genial.


Gran publicación y respuestas. Solo quería actualizar para incluir a Freshen en esta lista, ya que he leído que las fotografías se descontinúan. Una buena publicación sobre el uso de BDD y Django con Freshen está here .


La lechuga significa ser una herramienta parecida al pepino para python: http://lettuce.it/

Puede obtener la fuente en github.com/gabrielfalcao/lettuce


Me gusta mucho Pyccuracy . Lo estoy implementando en un proyecto de mediano tamaño en estos días.


Probablemente me esté perdiendo completamente de vista el punto, pero lo que retuve del documento original de BDD fue que el BDD se acaba de volver a empaquetar para enfatizar algunas de las mejores prácticas.

Si mi interpretación es correcta, puede obtener un marco de BDD simplemente cambiando el nombre de los métodos en cualquier implementación de xUnit . Así que solo usa la unittest la biblioteca estándar.

EDITAR: Google rápido apareció un módulo de Behaviour en la tienda de queso . Luego de searching BDD no encontré nada más.


Prueba pyspecs . Hacer pruebas fáciles de leer y ejecutar constantemente durante el desarrollo fueron dos de mis principales objetivos al crear este proyecto.

Código de prueba:

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)

Salida de consola:

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


Puede usar "sure" para afirmaciones expresivas (como en RSpec)


Realmente recomiendo behave .

Buscando un clon de pepino para Python, comencé a usar lechuga, pero me pareció una réplica bastante torpemente diseñada. Muy antiponético.

Luego descubrí comportarme, y he estado muy feliz con eso.


Te recomiendo usar un conjunto de herramientas desarrolladas para ayudar a los programadores en la práctica de BDD y TDD. Este conjunto de herramientas está compuesto por: pycukes , specloud , ludibrio y should-dsl .

should-dsl le dará expectativas similares a RSpec. Todo lo que puede hacer con la API de expectativas de RSpec, should-dsl también. Puede tomar la última versión de Github .

specloud ayuda a ejecutar specloud BDD. Puedes instalarlo haciendo

pip install specloud

ludibrio es una biblioteca para dobles de prueba (Mocks, Stubs y Dummies). Instalarlo a través de

pip install ludibrio

Y pycukes es la herramienta principal para BDD. Ejecutará los Escenarios, etc. Nuevamente,

pip install pycukes

Para obtener más información, lea la documentación de herramientas en PyPi .


Ian Bicking recomienda usar doctest para el diseño impulsado por el comportamiento:

Personalmente tiendo a usar la nose y el espacio vacío simulacro en un estilo de diseño impulsado por el comportamiento. Específicamente, el plugin especificación para la nariz es excelente para BDD.