Practicando BDD con python [cerrado]
Pregunta
¿Cuáles son los marcos y herramientas más avanzados que están disponibles para Python para practicar el desarrollo impulsado por el comportamiento? Especialmente encontrar herramientas similares como rspec y mocha para ruby ??sería genial.
Solución
Ian Bicking recomienda utilizar doctest para el diseño basado en el comportamiento:
Yo personalmente tiendo a usar nose y simulacro de espacio vacío en un estilo de diseño basado en el comportamiento . Específicamente, la especificación plugin para nose es excelente para BDD.
Otros consejos
Lettuce significa ser una herramienta similar a un pepino para python: http://lettuce.it/
Puede obtener la fuente en github.com/gabrielfalcao/lettuce
Realmente recomiendo comportarse .
En busca de un clon de pepino para Python, comencé a usar lechuga, pero me pareció una réplica bastante torpe. Muy Unpythonic.
Luego descubrí comportarse, y he estado muy contento con eso.
Le recomiendo que use 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 .
caso de DSL le dará expectativas de tipo RSpec. Todo lo que puede hacer con la API de expectativa de RSpec, should-dsl también. Puede obtener la latestversion desde Github .
SpecLoud le ayuda a ejecutar pruebas de unidad tipo BDD. Puedes instalarlo haciendo
pip install specloud
Ludibrio es una biblioteca para pruebas de dobles (simulacros, talones y maniquíes). Instalarlo a través de
pip install ludibrio
Y PyCukes es la herramienta principal para BDD. Se ejecutarán los escenarios, etc. Una vez más,
pip install pycukes
Para obtener más información, lea la documentación de las herramientas en PyPi .
Puede usar " sure " para afirmaciones expresivas (como en RSpec)
El proyecto Pyccuracy es un esfuerzo por proporcionar un lenguaje específico de dominio para BDD en Python.
A diferencia de doctest, que funciona a 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.
Me gusta mucho Pyccuracy . Lo estoy implementando en un proyecto de tamaño mediano en estos días.
Pruebe pyspecs . Hacer que las pruebas sean fáciles de leer y que se ejecuten 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)
Probablemente me estoy perdiendo completamente el punto, pero lo que retuve del papel original de BDD fue que BDD fue simplemente TDD reempaquetado para enfatizar algunas de las mejores prácticas.
Si mi interpretación es correcta, puede obtener un marco BDD simplemente cambiando el nombre de los métodos en cualquier Implementación xUnit . Así que siga adelante y use la unittest de la biblioteca estándar .
EDITAR: un google rápido apareció un Comportamiento en el módulo Cheese Shop . Además, buscando BDD allí no encontró nada más.