SlideShare uma empresa Scribd logo
Testando Aplicações Django



     Como? Quando? Onde?



        Bernardo Fontes
           @bbfontes
@bbfontes – bernardofontes.net – falecomigo@bernardofontes.net
Testando Aplicações Django: Quando, Como e Onde?
Por que testar?
Testando Aplicações Django: Quando, Como e Onde?
Testando Aplicações Django: Quando, Como e Onde?
Testando Aplicações Django: Quando, Como e Onde?
Testes não são garantias
Testes não são garantias,
   mas são excelentes
      indicadores
Por que falar
sobre testes?
Só escrever testes
    não basta
Teste também é código!
I'm watching !
Código deve ser
 fácil de ler.
Código deve ser
 fácil de ler.

Testes também!
Código deve ser
fácil de entender.
Código deve ser
fácil de entender.

 Testes também!
Código deve ser
fácil de manter.
Código deve ser
fácil de manter.

Testes também!
#NOT
E dá para escrever bons
   testes no Django?
E dá para escrever bons
   testes no Django?
Recursos do Django
●   Views
●   Templates
●   Forms
●   Models
●   Signals
●   Template tags
●   Template filters
●   Settings
●   ...
Como começar a testar?
python manage.py startapp core
TUDO NUM ARQUIVO .PY
   SÓ!?!?! #WTF!!!
Organize seus testes
Test as Packages
Test as Packages
Test as Packages


    __init__.py:
Explícito é melhor
  que implícito e
evita ambiguidades
Testando o tripé do Django
●   Views
●   Forms
●   Models
Views – O que testar?
●   Em 99% dos casos:
    ●   Status code da resposta
    ●   Template utilizado
    ●   Contexto da resposta
    ●   Persistência no banco de dados
●   Em alguns outros casos:
    ●   Envio de e-mails
    ●   Conteúdo da resposta
    ●   Disparo de sinais
    ●   Conexões com APIs externas
Views – Como testar?
Django TestClient:

 ●   get(path, data={}, follow=False, **extra)
 ●   post(path, data={}, content_type=MULTIPART_CONTENT,
            follow=False, **extra)
 ●   put(path, data={}, content_type=MULTIPART_CONTENT,
            follow=False, **extra)
 ●   delete(path, follow=False, **extra)
 ●   ...
 ●   login(**credentials)
 ●   logout()
Testando uma view básica
Mais complexidade com email
Mais complexidade com
conteúdo da resposta
Testando uma view do admin
Forms – O que testar?
●   Validação do formulário
    ●   Geral
    ●   Por campo
●   Comportamento dos campos
    ●   Ex: atributo choice do
        ModelChoiceField
●   Comportamento do domínio do form
    ●   Ex: método save sobreescrito
Forms – Como testar?
●   Instanciar um objeto da classe do
    form com um dicionário de strings
    com os dados sendo passado por
    parâmetro
Forms – Code Snippet
Models – O que testar?

●   Validação do modelo
●   Métodos adicionados ao modelo
●   Estados da queryset
●   Cuidado para não testar o Django
Models – Como testar?
●   Instanciação de objetos daquele
    modelo normalmente e asserções
    através da API daquele objeto;
Models - Snippet
Sagacidades com testes!




      Estude TODO o pacote django.test




https://docs.djangoproject.com/en/dev/intro/tutorial05/
https://docs.djangoproject.com/en/dev/topics/testing/advanced/
Sagacidades com testes!



Use os asserts que o Django já te
             fornece.
Sagacidades com testes!


    Extenda o TestCase do Django
adicionando novos métodos de testes.

    Mas cuidado para não fazer
       #tudojuntoemisturado!
Sagacidades com testes!
Sagacidades com testes!



            Utilize o mock para simular
              comportamentos externos.




http://www.voidspace.org.uk/python/mock/
Sagacidades com testes!
Sagacidades com testes!



    Pré-popule seu banco utilizando o
               model_mommy.




http://github.com/vandersonmota/model_mommy/
Sagacidades para escrever testes!
Sagacidades com testes!



                  Substitua o TestRunner
                   do Django pelo Nose.




http://code.google.com/p/python/python-nose/
Ainda faltou testarmos
●   Signals
●   Template filters
●   Template tags
●   Settings
●   Management commands
●   ModelAdmin
●   Forms widgets
●   ...
Obrigado!
Perguntas?

Mais conteúdo relacionado

Mais procurados (20)

PDF
Palestra Testes Unidade Com JUnit
Robinson Castilho
 
PDF
Zend Framework Estrutura e TDD
PHP Day Curitiba
 
PDF
Desenvolvimento Dirigido por Testes com Junit
Adolfo Neto
 
ODP
PHPUnit e teste de software
ricardophp
 
PPT
Junit 4.0
elliando dias
 
PPT
Junit
elliando dias
 
PDF
Testes de Unidade com JUnit
elliando dias
 
PPT
Testes Automatizados de Software
Maurício Aniche
 
PDF
Testes de unidade e TDD SoLiSC 2011
Luís Cobucci
 
PPTX
Introdução a testes automatizados
Thiago Ghisi
 
PPTX
Introdução a testes unitários com jUnit
Leonardo Soares
 
PDF
Testes unitários como ferramentas de design de código
Paula Grangeiro
 
PDF
Django Object factory
italomaia
 
PDF
Testes unitários como ferramentas de design de código
Paula Grangeiro
 
PPTX
Automatizando seus testes com robot framework
Claudenir Freitas
 
PPTX
1 2 3 - Testando - Automatizando os testes de software
Heider Lopes
 
PPTX
Por que automatizar testes de software?
Samuel Lourenço
 
PPTX
TDD na Prática
Rafael Fuchs, PMP, MBA
 
PPTX
Desenvolvimento Dirigido por Testes
Camilo Ribeiro
 
PDF
Palestra TDD Javou! #08 2016
Matheus Fechine de Moura
 
Palestra Testes Unidade Com JUnit
Robinson Castilho
 
Zend Framework Estrutura e TDD
PHP Day Curitiba
 
Desenvolvimento Dirigido por Testes com Junit
Adolfo Neto
 
PHPUnit e teste de software
ricardophp
 
Junit 4.0
elliando dias
 
Testes de Unidade com JUnit
elliando dias
 
Testes Automatizados de Software
Maurício Aniche
 
Testes de unidade e TDD SoLiSC 2011
Luís Cobucci
 
Introdução a testes automatizados
Thiago Ghisi
 
Introdução a testes unitários com jUnit
Leonardo Soares
 
Testes unitários como ferramentas de design de código
Paula Grangeiro
 
Django Object factory
italomaia
 
Testes unitários como ferramentas de design de código
Paula Grangeiro
 
Automatizando seus testes com robot framework
Claudenir Freitas
 
1 2 3 - Testando - Automatizando os testes de software
Heider Lopes
 
Por que automatizar testes de software?
Samuel Lourenço
 
TDD na Prática
Rafael Fuchs, PMP, MBA
 
Desenvolvimento Dirigido por Testes
Camilo Ribeiro
 
Palestra TDD Javou! #08 2016
Matheus Fechine de Moura
 

Semelhante a Testando Aplicações Django: Quando, Como e Onde? (20)

KEY
Test é para os fracos
Thiago Avelino
 
PDF
Desenvolvimento web com python e django
Igor Sobreira
 
KEY
Django - Desenvolvimento web ágil com Python
Igor Sobreira
 
PDF
Django Básico
Joffily Ferreira
 
PDF
Testes com python: como fazer uma refatoração segura
Valberto Carneiro
 
ZIP
Python e Django na Globo.com
ricobl
 
PDF
Novidades do Django 1.2
flavioamieiro
 
PDF
Desmitificando as aplicações RESTFul usando Django Rest Framework
Bruno Oliveira
 
PDF
TDC2018FLN | Trilha Python - Do nada, tudo se constrói. Test-Driven Developme...
tdc-globalcode
 
PDF
Django Módulo Básico Parte I - Desenvolvimento de uma aplicação Web
antonio sérgio nogueira
 
PDF
Django - A sua cápsula de soluções web em python
Paula Grangeiro
 
PDF
Junho 2016 - Django - A sua cápsula de soluções web em python
Grupo de Testes Carioca
 
PDF
Desbravando a web com python - Matheus Lima
Matheus Dos Santos Lima
 
PDF
Django
flisolmaringa
 
PDF
Melhorando Testes No Django Com O Model Mommy
Bernardo Fontes
 
PDF
Desenvolvimento Ágil de Aplicações Web com Python e Django
Matheus Pereira
 
PDF
Django: Desenvolvendo uma aplicação web em minutos
Rodrigo Nossal
 
PDF
Tdd not sure if testing or developing
Renato Oliveira
 
PDF
Cp2011 python agil-ramiroluz
Campus Party Brasil
 
PPTX
My first app django
Paola Katherine Pacheco
 
Test é para os fracos
Thiago Avelino
 
Desenvolvimento web com python e django
Igor Sobreira
 
Django - Desenvolvimento web ágil com Python
Igor Sobreira
 
Django Básico
Joffily Ferreira
 
Testes com python: como fazer uma refatoração segura
Valberto Carneiro
 
Python e Django na Globo.com
ricobl
 
Novidades do Django 1.2
flavioamieiro
 
Desmitificando as aplicações RESTFul usando Django Rest Framework
Bruno Oliveira
 
TDC2018FLN | Trilha Python - Do nada, tudo se constrói. Test-Driven Developme...
tdc-globalcode
 
Django Módulo Básico Parte I - Desenvolvimento de uma aplicação Web
antonio sérgio nogueira
 
Django - A sua cápsula de soluções web em python
Paula Grangeiro
 
Junho 2016 - Django - A sua cápsula de soluções web em python
Grupo de Testes Carioca
 
Desbravando a web com python - Matheus Lima
Matheus Dos Santos Lima
 
Melhorando Testes No Django Com O Model Mommy
Bernardo Fontes
 
Desenvolvimento Ágil de Aplicações Web com Python e Django
Matheus Pereira
 
Django: Desenvolvendo uma aplicação web em minutos
Rodrigo Nossal
 
Tdd not sure if testing or developing
Renato Oliveira
 
Cp2011 python agil-ramiroluz
Campus Party Brasil
 
My first app django
Paola Katherine Pacheco
 
Anúncio

Último (7)

PPTX
Gestão de Mudanças - Os maiores desafios da Gestão de Mudanças e Gestão de Pr...
Gateware Group
 
PDF
Explorando o Futuro do Corpo: Implantes Neurais e o Biohacking dos Sentidos
cooperliora
 
PPTX
Desenvolvimento-de-Produtos-Inovadores.pptx
ssuser1d7565
 
PPTX
Gestão de Mudanças - O que é e como é implementada
Gateware Group
 
PPTX
Gestão de Mudanças - Fases do processo de mudança organizacional
Gateware Group
 
PPTX
Computacao-e-Tecnologias-Digitais-Por-Que-Aprender.pptx
RobertaOliveiradaFon1
 
PDF
Certificado em Redes Neurais Artificiais em Python
CaioSilva506151
 
Gestão de Mudanças - Os maiores desafios da Gestão de Mudanças e Gestão de Pr...
Gateware Group
 
Explorando o Futuro do Corpo: Implantes Neurais e o Biohacking dos Sentidos
cooperliora
 
Desenvolvimento-de-Produtos-Inovadores.pptx
ssuser1d7565
 
Gestão de Mudanças - O que é e como é implementada
Gateware Group
 
Gestão de Mudanças - Fases do processo de mudança organizacional
Gateware Group
 
Computacao-e-Tecnologias-Digitais-Por-Que-Aprender.pptx
RobertaOliveiradaFon1
 
Certificado em Redes Neurais Artificiais em Python
CaioSilva506151
 
Anúncio

Testando Aplicações Django: Quando, Como e Onde?