Praticando BDD com Python [fechado
Pergunta
Quais são as estruturas e ferramentas mais avançadas que existem para o Python para praticar o desenvolvimento orientado ao comportamento? Especialmente encontrar ferramentas semelhantes que RSPEC e Mocha para Ruby seriam ótimos.
Solução
Ian Bicking recomenda usar Doctest Para design orientado ao comportamento:
Eu pessoalmente tendi a usar nariz e Voidspace Mock em um estilo de design orientado a comportamento. Especificamente, a especificação plugar Para o nariz, é excelente para BDD.
Outras dicas
Alface significa ser uma ferramenta de pepino para Python: http://lettuce.it/
Você pode pegar a fonte em github.com/gabrielfalcao/lettuce
Eu realmente recomendo comporte-se.
Procurando um clone de pepino para Python, comecei a usar alface, mas achei uma réplica bastante desajeitada. Muito não patônico.
Então eu descobri que se comporta e fiquei muito feliz com isso.
Eu recomendo que você use um conjunto de ferramentas desenvolvidas para ajudar os programadores na prática de BDD e TDD. Este conjunto de ferramentas é composto por: pycukes, Specloud, Ludibrio e deve-dsl.
Deve-dsl dará a você expectativas do tipo RSPEC. Tudo o que você pode fazer com a API de expectativa do RSPEC, o DSL também. Você pode pegar o LastVersion do Github.
Specloud Ajuda você na execução de unidades de BDD. Você pode instalá -lo fazendo
pip install specloud
Ludibrio é uma biblioteca para duplas de teste (zombarias, stubs e manequins). Instale -o via
pip install ludibrio
E Pycukes é a principal ferramenta para BDD. Ele vai executar os cenários, etc. novamente,
pip install pycukes
Para mais informações, leia a documentação das ferramentas em Pypi.
Você pode usar "claro" Para afirmações expressivas (assim como no RSPEC)
O Projeto Pyccuracy é um esforço para fornecer uma linguagem específica de domínio para o BDD no Python.
Ao contrário do Doctest, que funciona no nível da API, ele codifica operações de nível superior, como carregar uma página da Web e enviar um formulário. Eu não usei, mas parece um tanto promissor se é isso que você está procurando.
Eu gosto Pyccuracy muito. Atualmente, estou implementando -o em um projeto de tamanho médio.
Tente Pyspecs. Tornando os testes fáceis de ler e correr constantemente durante o desenvolvimento foram dois dos meus principais objetivos na criação deste projeto.
Código de teste:
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)
Saída do 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)
Provavelmente estou perdendo completamente o ponto, mas o que retive do Papel BDD original Foi aquele que o BDD era apenas Tdd reembalado para enfatizar algumas práticas recomendadas.
Se minha interpretação estiver correta, você pode obter uma estrutura BDD apenas renomeando métodos em qualquer xunit implementação. Então, vá em frente e use a biblioteca padrão teste de unidade.
Editar: um Google rápido apareceu um Comportamento módulo no Queijaria. Mais longe procurando Para o BDD, não encontrou mais nada.