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.

Foi útil?

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.

Ótimo post e respostas. Só queria atualizar para incluir Refrescar Nesta lista, ao ler Pycukes, é descontinuado. Um bom post sobre o uso de BDD e Django com Freshen Is aqui.

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top