SlideShare uma empresa Scribd logo
1 de 24
Baixar para ler offline
Testes com
      Django e Object Factory

II Pylestras
     Palestrante
            Italo Maia




         http://www.italomaia.com/
         http://www.python.org.br
         http://pug-ce.python.org.br
Testes!
Software com Testes é

+ Caro
+ Trabalhoso

+ Barato
+ Confiável
+ Fácil evoluir
+ Trabalho em equipe
                       TDD
                       TDD
“Mas eu não gosto 
de escrever testes!”
por Desenvolvedor 
Genérico
Não Tolere Isso!

Código  sem  testes 
é  ruim  para  todo 
mundo!
Há motivos para não 
 gostar de testes...
      + Uma ferramenta para aprender
      + Código para escrever
      + Precisa configurar o ambiente
      + Demora
E o Python? [1]

DocTest
Testes  embutidos  no 
próprio código.

Prático  para      testar 
funções simples.
E o Python? [2]

UnitTest
Testes  escritos    em 
módulos próprios.

Código  organizado  e 
extensível.
UnitTest
Django, Testes e Você

             UnitTest Extendido
         Integração com Aplicativos
          Integração com o Models
           Banco de Testes Isolado
            Testes Por Aplicativo
Como Faz?
                        Testes ficam no tests.py
  projeto
  → app                 O Django te permite rodar 
  → → __init__.py       testes    por     projeto, 
  → → models.py         aplicativo,  TestCase  ou 
  → → tests.py          Método. 
  → → views.py


O comando abaixo executa os testes para você
python manage.py test [aplicativo[.TestCase[.metodo]]]
Massa! E Qual o 
           Problema?
Os dados do banco são limpos       Fixture
a cada teste.
Se  quiser  popular  o  banco      JSON
automaticamente você precisa       YAML
utilizar  fixtures  ou  popular 
manualmente.
Fixtures
Fixtures
Object Factory

“Fixtures On The Fly!”
O modelo muda, os testes não!
Fácil, extensível!              Factory Girl
Não depende de arquivos 
externos!
Model Mommy
Object Factory for Django (1.1 e 1.2)
Criado por Vanderson Motta
Vários contribuidores
Evoluindo rápidamente
Suporte a relações! *
Já Suporta *

SlugField CharField TextField URLField
  EmailField FileField ImageField
   ForeignKey ManyToManyField
            OneToOneField
 DateField DateTimeField BooleanField
           All Numeric Fields
Como Usar?
Por Baixo dos Panos
ModelMommy  funciona  com  introspecção  dos 
campos  do  Modelo.  Para  cada  campo,  há  um 
“gerador de dados” mapeado.
model_mommy/generators.py


  make_one e make_many são generators!
Exemplo Completo!
Generators
Funções simples que devolvem um valor para popular 
um campo do modelo. 
required busca valores do campo e devolve para o 
generator.
Sobrescrevendo Geradores
Dúvidas?
https://github.com/vandersonmota/model_mommy
https://github.com/italomaia/model_mommy/
http://docs.djangoproject.com/en/1.2/topics/testing/
http://www.deviantart.com/
http://tr1ckxi3.deviantart.com/
http://ech­ztx.deviantart.com/
http://cerberusphoenix.deviantart.com/
http://usoppthegreat.deviantart.com/
http://era­artwork.deviantart.com/
http://shabarov.deviantart.com/

Mais conteúdo relacionado

Mais procurados

Minas Testing Conference 2016 - Testes de Carga com Locust
Minas Testing Conference 2016 - Testes de Carga com LocustMinas Testing Conference 2016 - Testes de Carga com Locust
Minas Testing Conference 2016 - Testes de Carga com LocustStefan Teixeira
 
Tester, pegue suas coisas, você está demitido
Tester, pegue suas coisas, você está demitidoTester, pegue suas coisas, você está demitido
Tester, pegue suas coisas, você está demitidoLeonardo Galani
 
Automação de Testes com Robot Framework - GUTS-SC
Automação de Testes com Robot Framework - GUTS-SCAutomação de Testes com Robot Framework - GUTS-SC
Automação de Testes com Robot Framework - GUTS-SCMayara Fernandes
 
Desenvolvimento de builds automizados com Jenkins - Em Busca do build Perfeito!
Desenvolvimento de builds automizados com Jenkins - Em Busca do build Perfeito!Desenvolvimento de builds automizados com Jenkins - Em Busca do build Perfeito!
Desenvolvimento de builds automizados com Jenkins - Em Busca do build Perfeito!Robson Bittencourt
 
Zend Framework Estrutura e TDD
Zend Framework Estrutura e TDDZend Framework Estrutura e TDD
Zend Framework Estrutura e TDDPHP Day Curitiba
 
TDD em django sem desculpas versao fisl
TDD em django sem desculpas versao fislTDD em django sem desculpas versao fisl
TDD em django sem desculpas versao fislAdriano Petrich
 
Robot Framework - principais características
Robot Framework - principais característicasRobot Framework - principais características
Robot Framework - principais característicasalinebiath
 
Assespro pr-workshop-robot framework
Assespro pr-workshop-robot frameworkAssespro pr-workshop-robot framework
Assespro pr-workshop-robot frameworkMayara Fernandes
 
Facilitando o desenvolvimento orientado a testes em aplicações PHP
Facilitando o desenvolvimento orientado a testes em aplicações PHPFacilitando o desenvolvimento orientado a testes em aplicações PHP
Facilitando o desenvolvimento orientado a testes em aplicações PHPPedro Chaves
 
NuGet - Gerenciando dependências em .NET
NuGet - Gerenciando dependências em .NETNuGet - Gerenciando dependências em .NET
NuGet - Gerenciando dependências em .NETVinicius Quaiato
 
Minas Testing Conference 2015 - Visual Regression Testing em ambientes na nuvem
Minas Testing Conference 2015 - Visual Regression Testing em ambientes na nuvemMinas Testing Conference 2015 - Visual Regression Testing em ambientes na nuvem
Minas Testing Conference 2015 - Visual Regression Testing em ambientes na nuvemStefan Teixeira
 
Mutant Testing: um mundo para um X-Tester participar.
Mutant Testing: um mundo para um X-Tester participar.Mutant Testing: um mundo para um X-Tester participar.
Mutant Testing: um mundo para um X-Tester participar.Robson Agapito Correa
 
Mutant Testing: um mundo para um X-Testing.
Mutant Testing: um mundo para um X-Testing.Mutant Testing: um mundo para um X-Testing.
Mutant Testing: um mundo para um X-Testing.Robson Agapito Correa
 
Introdução ao TDD (Test-Driven Development) - #guma10anos
Introdução ao TDD (Test-Driven Development) - #guma10anosIntrodução ao TDD (Test-Driven Development) - #guma10anos
Introdução ao TDD (Test-Driven Development) - #guma10anosDionatan default
 
Mtc docker - utilizando no seu dia a dia
Mtc   docker - utilizando no seu dia a diaMtc   docker - utilizando no seu dia a dia
Mtc docker - utilizando no seu dia a diaRafael Chiavegatto
 
Criando um ambiente real de distribuição de aplicativos usando TestFairy
Criando um ambiente real de distribuição de aplicativos usando TestFairyCriando um ambiente real de distribuição de aplicativos usando TestFairy
Criando um ambiente real de distribuição de aplicativos usando TestFairyRafael Pacheco
 
#1 Robot Floripa - Robot Framework: O que é? Onde vive? Do que se alimenta?
#1 Robot Floripa - Robot Framework: O que é? Onde vive? Do que se alimenta?#1 Robot Floripa - Robot Framework: O que é? Onde vive? Do que se alimenta?
#1 Robot Floripa - Robot Framework: O que é? Onde vive? Do que se alimenta?Mayara Fernandes
 
Primeiros passos com splinter - PySM
Primeiros passos com splinter - PySMPrimeiros passos com splinter - PySM
Primeiros passos com splinter - PySMAdriano Margarin
 

Mais procurados (20)

Minas Testing Conference 2016 - Testes de Carga com Locust
Minas Testing Conference 2016 - Testes de Carga com LocustMinas Testing Conference 2016 - Testes de Carga com Locust
Minas Testing Conference 2016 - Testes de Carga com Locust
 
Tester, pegue suas coisas, você está demitido
Tester, pegue suas coisas, você está demitidoTester, pegue suas coisas, você está demitido
Tester, pegue suas coisas, você está demitido
 
Automação de Testes com Robot Framework - GUTS-SC
Automação de Testes com Robot Framework - GUTS-SCAutomação de Testes com Robot Framework - GUTS-SC
Automação de Testes com Robot Framework - GUTS-SC
 
Desenvolvimento de builds automizados com Jenkins - Em Busca do build Perfeito!
Desenvolvimento de builds automizados com Jenkins - Em Busca do build Perfeito!Desenvolvimento de builds automizados com Jenkins - Em Busca do build Perfeito!
Desenvolvimento de builds automizados com Jenkins - Em Busca do build Perfeito!
 
Zend Framework Estrutura e TDD
Zend Framework Estrutura e TDDZend Framework Estrutura e TDD
Zend Framework Estrutura e TDD
 
TDD em django sem desculpas versao fisl
TDD em django sem desculpas versao fislTDD em django sem desculpas versao fisl
TDD em django sem desculpas versao fisl
 
Robot Framework - principais características
Robot Framework - principais característicasRobot Framework - principais características
Robot Framework - principais características
 
Tdd na veia
Tdd na veiaTdd na veia
Tdd na veia
 
Assespro pr-workshop-robot framework
Assespro pr-workshop-robot frameworkAssespro pr-workshop-robot framework
Assespro pr-workshop-robot framework
 
Facilitando o desenvolvimento orientado a testes em aplicações PHP
Facilitando o desenvolvimento orientado a testes em aplicações PHPFacilitando o desenvolvimento orientado a testes em aplicações PHP
Facilitando o desenvolvimento orientado a testes em aplicações PHP
 
NuGet - Gerenciando dependências em .NET
NuGet - Gerenciando dependências em .NETNuGet - Gerenciando dependências em .NET
NuGet - Gerenciando dependências em .NET
 
Minas Testing Conference 2015 - Visual Regression Testing em ambientes na nuvem
Minas Testing Conference 2015 - Visual Regression Testing em ambientes na nuvemMinas Testing Conference 2015 - Visual Regression Testing em ambientes na nuvem
Minas Testing Conference 2015 - Visual Regression Testing em ambientes na nuvem
 
Unit Testing
Unit TestingUnit Testing
Unit Testing
 
Mutant Testing: um mundo para um X-Tester participar.
Mutant Testing: um mundo para um X-Tester participar.Mutant Testing: um mundo para um X-Tester participar.
Mutant Testing: um mundo para um X-Tester participar.
 
Mutant Testing: um mundo para um X-Testing.
Mutant Testing: um mundo para um X-Testing.Mutant Testing: um mundo para um X-Testing.
Mutant Testing: um mundo para um X-Testing.
 
Introdução ao TDD (Test-Driven Development) - #guma10anos
Introdução ao TDD (Test-Driven Development) - #guma10anosIntrodução ao TDD (Test-Driven Development) - #guma10anos
Introdução ao TDD (Test-Driven Development) - #guma10anos
 
Mtc docker - utilizando no seu dia a dia
Mtc   docker - utilizando no seu dia a diaMtc   docker - utilizando no seu dia a dia
Mtc docker - utilizando no seu dia a dia
 
Criando um ambiente real de distribuição de aplicativos usando TestFairy
Criando um ambiente real de distribuição de aplicativos usando TestFairyCriando um ambiente real de distribuição de aplicativos usando TestFairy
Criando um ambiente real de distribuição de aplicativos usando TestFairy
 
#1 Robot Floripa - Robot Framework: O que é? Onde vive? Do que se alimenta?
#1 Robot Floripa - Robot Framework: O que é? Onde vive? Do que se alimenta?#1 Robot Floripa - Robot Framework: O que é? Onde vive? Do que se alimenta?
#1 Robot Floripa - Robot Framework: O que é? Onde vive? Do que se alimenta?
 
Primeiros passos com splinter - PySM
Primeiros passos com splinter - PySMPrimeiros passos com splinter - PySM
Primeiros passos com splinter - PySM
 

Destaque

Destaque (13)

E marketing pessoal # Você On line
E marketing pessoal # Você On lineE marketing pessoal # Você On line
E marketing pessoal # Você On line
 
Django para portais de alta visibilidade. tdc 2013
Django para portais de alta visibilidade.   tdc 2013Django para portais de alta visibilidade.   tdc 2013
Django para portais de alta visibilidade. tdc 2013
 
djangocon dajaxproject lightning talk
djangocon dajaxproject lightning talkdjangocon dajaxproject lightning talk
djangocon dajaxproject lightning talk
 
Wiki sa-v2
Wiki sa-v2Wiki sa-v2
Wiki sa-v2
 
Open Library no Mongodb
Open Library no MongodbOpen Library no Mongodb
Open Library no Mongodb
 
O Estado do Python
O Estado do PythonO Estado do Python
O Estado do Python
 
NoSQL na BIREME: 20 anos de experiência
NoSQL na BIREME: 20 anos de experiênciaNoSQL na BIREME: 20 anos de experiência
NoSQL na BIREME: 20 anos de experiência
 
Django debug-toolbar
Django debug-toolbarDjango debug-toolbar
Django debug-toolbar
 
Django
DjangoDjango
Django
 
Talk at QConSP
Talk at QConSPTalk at QConSP
Talk at QConSP
 
Dojo de Programação
Dojo de ProgramaçãoDojo de Programação
Dojo de Programação
 
Python3
Python3Python3
Python3
 
Virtualenv e Pip
Virtualenv e PipVirtualenv e Pip
Virtualenv e Pip
 

Semelhante a Django Object factory

Teste cabra da peste
Teste cabra da pesteTeste cabra da peste
Teste cabra da pesteMichele Silva
 
Desenvolvimento Dirigido por Testes
Desenvolvimento Dirigido por TestesDesenvolvimento Dirigido por Testes
Desenvolvimento Dirigido por TestesCamilo Ribeiro
 
Descomplicando os mocks
Descomplicando os mocksDescomplicando os mocks
Descomplicando os mocksDouglas Bastos
 
Tdd not sure if testing or developing
Tdd  not sure if testing or developingTdd  not sure if testing or developing
Tdd not sure if testing or developingRenato Oliveira
 
Apresentacao Testes de Unidade
Apresentacao Testes de UnidadeApresentacao Testes de Unidade
Apresentacao Testes de UnidadeAline Ferreira
 
Padroes de Testes Automatizados com Django
Padroes de Testes Automatizados com DjangoPadroes de Testes Automatizados com Django
Padroes de Testes Automatizados com DjangoPaulo Cheque
 
Introdução a testes automatizados
Introdução a testes automatizadosIntrodução a testes automatizados
Introdução a testes automatizadosThiago Ghisi
 
Testes automatizados end-to-end com WordPress por Fabio Nas
Testes automatizados end-to-end com WordPress por Fabio NasTestes automatizados end-to-end com WordPress por Fabio Nas
Testes automatizados end-to-end com WordPress por Fabio NasWordCamp Floripa
 
Qualidade no desenvolvimento de Software com TDD e PHPUnit
Qualidade no desenvolvimento de Software com TDD e PHPUnitQualidade no desenvolvimento de Software com TDD e PHPUnit
Qualidade no desenvolvimento de Software com TDD e PHPUnitDomingos Teruel
 
In tests we trust: começando com TDD, mocks e mais
In tests we trust: começando com TDD, mocks e maisIn tests we trust: começando com TDD, mocks e mais
In tests we trust: começando com TDD, mocks e maisAna Paula Gomes
 
Test-Driven Development with PHP
Test-Driven Development with PHPTest-Driven Development with PHP
Test-Driven Development with PHPCezar Souza
 
TDD: A Essência do Mantra
TDD: A Essência do MantraTDD: A Essência do Mantra
TDD: A Essência do MantraDionatan default
 
TDD (Test Driven Development)
TDD (Test Driven Development)TDD (Test Driven Development)
TDD (Test Driven Development)Felipe Pimentel
 
Por que testar é importante e algumas boas práticas
Por que testar é importante e algumas boas práticasPor que testar é importante e algumas boas práticas
Por que testar é importante e algumas boas práticasLucas Caton
 
Testes de Unidade com Junit
Testes de Unidade com JunitTestes de Unidade com Junit
Testes de Unidade com Junitcejug
 
Qualidade de software com Visual Studio ALM
Qualidade de software com Visual Studio ALMQualidade de software com Visual Studio ALM
Qualidade de software com Visual Studio ALMAdriano Bertucci
 
Test driven development
Test driven developmentTest driven development
Test driven developmentclauvane1708
 
Desenvolvimento web com python e django
Desenvolvimento web com python e djangoDesenvolvimento web com python e django
Desenvolvimento web com python e djangoIgor Sobreira
 

Semelhante a Django Object factory (20)

Teste cabra da peste
Teste cabra da pesteTeste cabra da peste
Teste cabra da peste
 
Desenvolvimento Dirigido por Testes
Desenvolvimento Dirigido por TestesDesenvolvimento Dirigido por Testes
Desenvolvimento Dirigido por Testes
 
Descomplicando os mocks
Descomplicando os mocksDescomplicando os mocks
Descomplicando os mocks
 
Tdd not sure if testing or developing
Tdd  not sure if testing or developingTdd  not sure if testing or developing
Tdd not sure if testing or developing
 
Apresentacao Testes de Unidade
Apresentacao Testes de UnidadeApresentacao Testes de Unidade
Apresentacao Testes de Unidade
 
Padroes de Testes Automatizados com Django
Padroes de Testes Automatizados com DjangoPadroes de Testes Automatizados com Django
Padroes de Testes Automatizados com Django
 
Introdução a testes automatizados
Introdução a testes automatizadosIntrodução a testes automatizados
Introdução a testes automatizados
 
Testes automatizados end-to-end com WordPress por Fabio Nas
Testes automatizados end-to-end com WordPress por Fabio NasTestes automatizados end-to-end com WordPress por Fabio Nas
Testes automatizados end-to-end com WordPress por Fabio Nas
 
Qualidade no desenvolvimento de Software com TDD e PHPUnit
Qualidade no desenvolvimento de Software com TDD e PHPUnitQualidade no desenvolvimento de Software com TDD e PHPUnit
Qualidade no desenvolvimento de Software com TDD e PHPUnit
 
In tests we trust: começando com TDD, mocks e mais
In tests we trust: começando com TDD, mocks e maisIn tests we trust: começando com TDD, mocks e mais
In tests we trust: começando com TDD, mocks e mais
 
Test-Driven Development with PHP
Test-Driven Development with PHPTest-Driven Development with PHP
Test-Driven Development with PHP
 
TDD: A Essência do Mantra
TDD: A Essência do MantraTDD: A Essência do Mantra
TDD: A Essência do Mantra
 
Testes de unidade - Conhecendo e aplicando
Testes de unidade - Conhecendo e aplicandoTestes de unidade - Conhecendo e aplicando
Testes de unidade - Conhecendo e aplicando
 
Testes unitários e Mocks
Testes unitários e MocksTestes unitários e Mocks
Testes unitários e Mocks
 
TDD (Test Driven Development)
TDD (Test Driven Development)TDD (Test Driven Development)
TDD (Test Driven Development)
 
Por que testar é importante e algumas boas práticas
Por que testar é importante e algumas boas práticasPor que testar é importante e algumas boas práticas
Por que testar é importante e algumas boas práticas
 
Testes de Unidade com Junit
Testes de Unidade com JunitTestes de Unidade com Junit
Testes de Unidade com Junit
 
Qualidade de software com Visual Studio ALM
Qualidade de software com Visual Studio ALMQualidade de software com Visual Studio ALM
Qualidade de software com Visual Studio ALM
 
Test driven development
Test driven developmentTest driven development
Test driven development
 
Desenvolvimento web com python e django
Desenvolvimento web com python e djangoDesenvolvimento web com python e django
Desenvolvimento web com python e django
 

Mais de italomaia

IX Pylestras - SmartGrid com Python
IX Pylestras - SmartGrid com PythonIX Pylestras - SmartGrid com Python
IX Pylestras - SmartGrid com Pythonitalomaia
 
Scraping for fun and glory
Scraping for fun and gloryScraping for fun and glory
Scraping for fun and gloryitalomaia
 
Scraping for fun and glory annotated
Scraping for fun and glory annotatedScraping for fun and glory annotated
Scraping for fun and glory annotateditalomaia
 
Empty - The Flask Boilerplate
Empty - The Flask BoilerplateEmpty - The Flask Boilerplate
Empty - The Flask Boilerplateitalomaia
 
Conhecendo o pug-ce
Conhecendo o pug-ceConhecendo o pug-ce
Conhecendo o pug-ceitalomaia
 
Django Tem Ritmo
Django Tem RitmoDjango Tem Ritmo
Django Tem Ritmoitalomaia
 

Mais de italomaia (6)

IX Pylestras - SmartGrid com Python
IX Pylestras - SmartGrid com PythonIX Pylestras - SmartGrid com Python
IX Pylestras - SmartGrid com Python
 
Scraping for fun and glory
Scraping for fun and gloryScraping for fun and glory
Scraping for fun and glory
 
Scraping for fun and glory annotated
Scraping for fun and glory annotatedScraping for fun and glory annotated
Scraping for fun and glory annotated
 
Empty - The Flask Boilerplate
Empty - The Flask BoilerplateEmpty - The Flask Boilerplate
Empty - The Flask Boilerplate
 
Conhecendo o pug-ce
Conhecendo o pug-ceConhecendo o pug-ce
Conhecendo o pug-ce
 
Django Tem Ritmo
Django Tem RitmoDjango Tem Ritmo
Django Tem Ritmo
 

Django Object factory