BDD com Python,

Facilite a vida de todos!

Daniel Bastos

http://daniellbastos.com.br
https://fb.com/danielfbastos

danielfloresbastos@gmail.com

51 99384-2797

Apresentação

Programador Python
Freelancer

Acadêmico



Organização de eventos:

PySM (2014/2015)

Trilha de Python (TDC 2014/2015)

Aviso importante

"Sisteminha" para gerenciar

meus clientes

O Problema do telefone sem fio

Desenvolvedor

Cliente

Projeto de exemplo com Django

Projeto de exemplo com Django

CRUD

clients/views.py

clients/forms.py

clients/urls.py

Projeto de exemplo com Django

CRUD

templates/clients/client_form.html

templates/clients/client_list.html

TDD

  • Reduz bugs em produção
  • Facilita a escrita de código
  • Da confiança ao realizar alterações
  • Feedback rápido

TDD

Cenário 1:

    Permitir desativar os clientes do sistema

TDD com Django

TDD com Django

clients/managers.py

clients/models.py

TDD com Django

clients/factories.py

clients/tests.py

TDD com Django

TDD

Cenário 2:

    Permitir a remoção lógica dos clientes do sistema

TDD com Django

clients/models.py

clients/factories.py

TDD com Django

TDD com Django

TDD Win!!

Analisando um arquivo de teste

BDD

  • Reduz ruído entre cliente e desenvolvedores
  • Facilita o entendimento das features
  • Padroniza a comunicação cliente/desenvolvedores
  • Foco na funcionalidade e não na unidade
  • Dado que... Indica o cenário atual
     
  • Quando... Indica alguma ação do usuário/sistema
     
  • Então... Indica como o software de reagir

Existem algum padrão de escrita?
Sim, mas eu entendo isso mais como um guia

Há também os operadores E e OU

BDD

BDD

BDD

BDD

Rodando os cenários: ./manage.py behave

BDD

Rodando os cenários: ./manage.py behave

BDD

BDD

Cenário 3:

    Permitir visualizar clientes inativos

BDD

BDD

clients/views.py

clients/urls.py

clients/templates/clients/client_list.html

BDD

SPLINTER_DRIVER=firefox ./manage.py behave

Conclusão

Made with Slides.com