Quali sono i framework e gli strumenti più avanzati disponibili per Python per la pratica dello sviluppo guidato dal comportamento? Soprattutto trovare strumenti simili come rspec e moka per ruby sarebbe fantastico.
Quali sono i framework e gli strumenti più avanzati disponibili per Python per la pratica dello sviluppo guidato dal comportamento? Soprattutto trovare strumenti simili come rspec e moka per ruby sarebbe fantastico.
Risposte:
Ian Bicking consiglia di utilizzare doctest per la progettazione basata sul comportamento:
Personalmente tendo a usare il finto naso e spazio vuoto in uno stile di design orientato al comportamento. In particolare, il plug-in delle specifiche per nose è eccellente per BDD.
Lattuga significa essere uno strumento simile a un cetriolo per Python: http://lettuce.it/
Puoi prendere la fonte su github.com/gabrielfalcao/lettuce
Consiglio davvero di comportarsi bene .
Alla ricerca di un clone di Cetriolo per Python, ho iniziato a usare la lattuga, ma l'ho trovata una replica piuttosto maldestra. Molto Unpythonic.
Poi ho scoperto comportarsi e ne sono stato davvero contento.
Ti consiglio di utilizzare una serie di strumenti sviluppati per aiutare i programmatori nella pratica di BDD e TDD. Questo set di strumenti è composto da: pycukes , specloud , ludibrio e should-dsl .
Should-DSL ti darà aspettative simili a quelle di RSpec. Tutto ciò che puoi fare con l'API di aspettativa di RSpec, dovrebbe farlo anche dsl. Puoi prendere l' ultima versione di Github .
SpecLoud ti aiuta a eseguire unittest simili a BDD. Puoi installarlo facendo
pip install specloud
Ludibrio è una libreria per doppi di test (Mock, Stub e Dummies). Installalo tramite
pip install ludibrio
E PyCukes è lo strumento principale per BDD. Farà funzionare gli scenari, ecc. Ancora una volta,
pip install pycukes
Per maggiori informazioni, leggi la documentazione degli strumenti su PyPi .
Puoi usare "sicuro" per affermazioni espressive (proprio come in RSpec)
Il progetto Pyccuracy è uno sforzo per fornire un linguaggio specifico di dominio per BDD in Python.
A differenza di doctest, che funziona a livello di API, codifica operazioni di livello superiore come il caricamento di una pagina Web e l'invio di un modulo. Non l'ho usato ma sembra un po 'promettente se è quello che stai cercando.
Mi piace molto la Pyccuracy . Oggi lo sto implementando su un progetto di medie dimensioni.
Prova pyspecs . Rendere i test facili da leggere e costantemente eseguiti durante lo sviluppo sono stati due dei miei obiettivi principali nella creazione di questo progetto.
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)
Probabilmente mi manca completamente il punto, ma ciò che ho conservato del documento BDD originale è che BDD è stato appena riconfezionato da TDD per enfatizzare alcune migliori pratiche.
Se la mia interpretazione è corretta, puoi ottenere un framework BDD semplicemente rinominando i metodi in qualsiasi implementazione xUnit . Quindi vai avanti e usa la libreria standard unittest .
EDIT: un rapido google ha mostrato un modulo Behavior nel Cheese Shop . Ulteriore ricerca di BDD non ha trovato nient'altro.