Domanda

Quali sono i framework e gli strumenti più avanzati disponibili per Python per praticare lo sviluppo guidato dal comportamento? Soprattutto trovare strumenti simili come rspec e moka per ruby ??sarebbe fantastico.

È stato utile?

Soluzione

Ian Bicking consiglia di utilizzare doctest per la progettazione basata sul comportamento:

Personalmente tendo a usare nose e voidspace mock in uno stile di design orientato al comportamento . In particolare, la specifica plugin per nose è eccellente per BDD.

Altri suggerimenti

Lattuga significa essere uno strumento simile a un cetriolo per Python: http://lettuce.it/

Puoi prendere la fonte su github.com/gabrielfalcao/lettuce

Consiglio vivamente comportarsi .

Alla ricerca di un clone di Cetriolo per Python, ho iniziato a usare la lattuga, ma l'ho trovata una replica piuttosto goffa. Molto Unpythonic.

Poi ho scoperto comportarsi e ne sono stato davvero contento.

Ti consiglio di usare 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 RSpec. Tutto ciò che puoi fare con l'API di aspettativa di RSpec, dovrebbe farlo anche dsl. Puoi prendere latestversion di Github .

SpecLoud ti aiuta a gestire unittest simili a BDD. Puoi installarlo facendo

pip install specloud

Ludibrio è una libreria per doppi di test (Mock, Stubs e Dummies). Installalo tramite

pip install ludibrio

E PyCukes è lo strumento principale per BDD. Eseguirà gli scenari, ecc. Ancora una volta,

pip install pycukes

Per maggiori informazioni leggi la documentazione degli strumenti su PyPi .

Ottimo post e risposte. Volevo solo aggiornare per includere Freshen in questo elenco mentre leggo pycukes è fuori produzione. Un buon post sull'uso di BDD e Django con Freshen è qui .

Puoi utilizzare " sure " per affermazioni espressive (proprio come in RSpec)

Il progetto Pyccuracy è uno sforzo per fornire un linguaggio specifico del 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 Pyccuracy . Attualmente lo sto implementando su un progetto di medie dimensioni.

Prova pyspecs . Rendere i test facili da leggere e costantemente in esecuzione durante lo sviluppo sono stati due dei miei obiettivi principali nella creazione di questo progetto.

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

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

Probabilmente mi manca completamente il punto, ma ciò che ho conservato del documento BDD originale era che BDD è stato appena TDD riconfezionato per enfatizzare alcune migliori pratiche.

Se la mia interpretazione è corretta, puoi ottenere un framework BDD semplicemente rinominando i metodi in qualsiasi xUnit implementazione. Quindi vai avanti e usa unittest della libreria standard .

EDIT: un rapido google ha mostrato un Behavior nel modulo Latteria . Inoltre search per BDD non ha trovato altro.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top