Quais são as estruturas e ferramentas mais avançadas disponíveis para o python para praticar o Behavior Driven Development? Especialmente encontrar ferramentas semelhantes como rspec e mocha para ruby seria ótimo.
Quais são as estruturas e ferramentas mais avançadas disponíveis para o python para praticar o Behavior Driven Development? Especialmente encontrar ferramentas semelhantes como rspec e mocha para ruby seria ótimo.
Respostas:
Ian Bicking recomenda usar o doctest para o design orientado a comportamento:
Pessoalmente, costumo usar simulações de nariz e espaço vazio em um estilo de design orientado a comportamentos. Especificamente, o plugin de especificação para o nariz é excelente para o BDD.
Alface significa ser uma ferramenta semelhante a pepino para python: http://lettuce.it/
Você pode acessar a fonte em github.com/gabrielfalcao/lettuce
Eu realmente recomendo se comportar .
Procurando por um clone de pepino para Python, comecei a usar alface, mas achei uma réplica bastante desajeitada. Muito antitônico.
Então eu descobri o comportamento e fiquei muito feliz com isso.
Eu recomendo que você use um conjunto de ferramentas desenvolvidas para ajudar os programadores na prática do BDD e TDD. Este conjunto de ferramentas é composto por: pycukes , specloud , ludibrio e should-dsl .
O DSL deveria fornecer expectativas semelhantes ao RSpec. Tudo o que você pode fazer com a API de expectativa do RSpec, também deve-dsl. Você pode pegar a versão mais recente do Github .
O SpecLoud ajuda você a executar unittests do tipo BDD. Você pode instalá-lo fazendo
pip install specloud
Ludibrio é uma biblioteca para duplas de teste (Mocks, Stubs e Dummies). Instale-o via
pip install ludibrio
E PyCukes é a principal ferramenta para BDD. Ele executará os cenários, etc. Novamente,
pip install pycukes
Para mais informações, leia a documentação das ferramentas em PyPi .
Você pode usar "sure" para afirmações expressivas (como no RSpec)
O projeto Pyccuracy é um esforço para fornecer uma linguagem específica de domínio para o BDD no Python.
Diferentemente 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 o usei, mas parece um pouco promissor se é isso que você está procurando.
Eu gosto muito de Pyccuracy . Atualmente, estou implementando em um projeto de tamanho médio.
Experimente pyspecs . Facilitar a leitura dos testes e executar constantemente durante o desenvolvimento foram dois dos meus principais objetivos na criação deste projeto.
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)
Provavelmente estou perdendo completamente o objetivo, mas o que reti do documento original do BDD foi que o BDD foi apenas reembalado pelo TDD para enfatizar algumas das melhores práticas.
Se minha interpretação estiver correta, você poderá obter uma estrutura BDD apenas renomeando métodos em qualquer implementação xUnit . Então vá em frente e use a biblioteca padrão da unittest .
EDIT: Um rápido google apareceu um módulo de comportamento na loja de queijo . Uma pesquisa mais aprofundada do BDD não encontrou mais nada.