django object factory
TRANSCRIPT
Testes comDjango e Object Factory
http://pug-ce.python.org.br
http://www.python.org.br
Palestrante
Italo Maia
II Pylestras
http://www.italomaia.com/
Software com Testes é
+ Caro+ Trabalhoso
+ Barato+ Confiável+ Fácil evoluir+ Trabalho em equipe TDDTDD
Há motivos para não gostar de testes...
+ Uma ferramenta para aprender+ Código para escrever+ Precisa configurar o ambiente+ Demora
Django, Testes e Você
UnitTest ExtendidoIntegração com AplicativosIntegração com o ModelsBanco de Testes Isolado
Testes Por Aplicativo
Como Faz?
projeto → app → → __init__.py → → models.py → → tests.py → → views.py
Testes ficam no tests.py
O Django te permite rodar testes por projeto, aplicativo, TestCase ou Método.
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 a cada teste.Se quiser popular o banco automaticamente você precisa utilizar fixtures ou popular manualmente.
Fixture
JSONYAML
Object Factory
“Fixtures On The Fly!”
O modelo muda, os testes não!
Fácil, extensível!
Não depende de arquivos externos!
Factory Girl
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 URLFieldEmailField FileField ImageFieldForeignKey ManyToManyField
OneToOneFieldDateField DateTimeField BooleanField
All Numeric Fields
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!
GeneratorsFunções simples que devolvem um valor para popular um campo do modelo. required busca valores do campo e devolve para o generator.
Dúvidas?https://github.com/vandersonmota/model_mommyhttps://github.com/italomaia/model_mommy/http://docs.djangoproject.com/en/1.2/topics/testing/http://www.deviantart.com/http://tr1ckxi3.deviantart.com/http://echztx.deviantart.com/http://cerberusphoenix.deviantart.com/http://usoppthegreat.deviantart.com/http://eraartwork.deviantart.com/http://shabarov.deviantart.com/