Comparação do framework Python BDD: prós e contras

Olá pessoal. Já neste mês , o curso de engenheiro de controle de qualidade do Python começa na OTUS. Antecipando o início deste curso, estamos compartilhando com você a tradução de material interessante.



Quase todas as principais linguagens de programação possuem estruturas para teste de BDD , e o Python não é exceção. E, de fato, ele tem vários deles! Então, como você os compara e qual é o melhor? Vamos tentar descobrir.


comportar-se


O comportamento é uma das estruturas python BDD mais populares. Apesar de não fazer parte oficialmente do projeto Cucumber , sua funcionalidade é bastante semelhante à estrutura do Cucumber.


Fontes:



Logomarca



Prós:


  • Suporta totalmente a linguagem Gherkin;
  • A funcionalidade do ambiente e acessórios facilita a instalação e remoção;
  • Existe integração com o Django e o Flask;
  • Popular entre os pythonists de BDD;
  • Boa documentação e manuais;
  • Há suporte para o PyCharm Professional Edition .

Contras:


  • Não há suporte para execução paralela, isso requer uma estrutura separada de comportamento paralelo ;
  • comportar-se é uma estrutura autônoma;
  • Compartilhar etapas entre arquivos de recursos pode ser problemático.

pytest-bdd


pytest-bdd é um plugin pytest que permite aos usuários escrever testes como arquivos de recursos Gherkin em vez de funções de teste. Como é integrado ao pytest, ele pode funcionar com outros plugins do pytest, como pytest-html para criar belos relatórios e pytest-xdist para testes paralelos. Ele também usa acessórios pytest para injetar dependências.


Fontes:



Logomarca



Prós:


  • Totalmente compatível com pytest e seus principais plugins;
  • Você pode aproveitar todos os benefícios da comunidade pytest;
  • As luminárias são uma ótima maneira de gerenciar o contexto entre as etapas;
  • Os testes podem ser filtrados e executados juntamente com outros testes pytest;
  • As definições de etapa e gancho podem ser facilmente compartilhadas usando conftest.py;
  • Os dados tabulares podem ser melhor processados ​​para testes orientados a dados ;
  • Excelente documentação online e tutoriais;
  • Há suporte para o PyCharm Professional Edition .

Contras:


  • Os módulos de definição de etapas devem ter declarações explícitas para arquivos de recursos (via "@scenario" ou a função "scenarios");
  • O plano do cenário deve ser tratado de maneira diferente.

rabanete


rabanete é uma estrutura destacada do BDD: adiciona nova sintaxe à linguagem Gherkin. Recursos de linguagem, como loops de script, pré-requisitos de script e constantes, tornam o rabanete de Gherkin mais programático para os casos de teste.


Fontes:



Logomarca



Prós:


  • As extensões de linguagem Gherkin permitem que os testadores escrevam melhor os testes;
  • Site, documentação e logotipo - tudo está no lugar;
  • Arquivos de recursos e definições de etapas são muito claros.

Contras:


  • É uma estrutura autônoma com um número limitado de extensões;
  • Os puristas do BDD podem não gostar da adição da sintaxe Gherkin.

alface


alface é outra estrutura “vegetal” do BDD Python, conhecida há vários anos. No entanto, seu site e código não são atualizados há muito tempo.


Fontes:



Logo:



Prós:


  • Código simples
  • Verificado e bom.

Contras:


  • Funcionalidade não tão rica quanto em outras estruturas;
  • Ele parece não ter nenhum apoio ativo contínuo.

refrescar


freshen é uma das primeiras estruturas para teste de BDD em Python. Ele era um plugin para o nariz . No entanto, freshen e nose não são mais suportados e sua página de documentação indica claramente o uso de outras estruturas.


Recomendações


Nenhuma das estruturas acima é perfeita, mas muitas têm vantagens significativas. Em geral, eu recomendaria o uso do pytest-bdd, pois possui todas as vantagens dos pontos fortes do pytest. Acredito que o pytest é uma das melhores estruturas para testes em qualquer idioma, devido à sua concisão, acessórios, afirmações e plugins. O Python Developers Survey 2018 revelou que o pytest é a estrutura de teste mais popular para o Python. Apesar do fato de o pytest-bdd não parecer tão sofisticado quanto o comportamento, acredito que alguns TLCs da comunidade de código aberto possam corrigir isso.
E mais algumas recomendações:


  • Use o comportamento se precisar de uma experiência de desenvolvimento limpa e confiável e de uma grande comunidade.
  • Use pytest-bdd se precisar de integração com outros plug-ins que já contenham vários testes de pytest ou se precisar executar testes em paralelo.
  • Use rabanete se quiser mais controle do software sobre os testes no nível Gherkin.
  • Não use alface e refresque.

Qual é a sua estrutura BDD favorita? Por favor, compartilhe nos comentários!

Source: https://habr.com/ru/post/pt460046/


All Articles