melhorando testes no django com o model mommy

69
Melhores Testes no Django Apresentado o Model Mommy Bernardo Fontes @bbfontes

Upload: bernardo-fontes

Post on 18-Dec-2014

3.075 views

Category:

Technology


0 download

DESCRIPTION

Palestra sobre a lib Model Mommy com descrição e exemplos de código sobre a sua utilização na criação de objetos representando models durante os testes do Django

TRANSCRIPT

Page 1: Melhorando Testes No Django Com O Model Mommy

Melhores Testes no Django

Apresentado o Model Mommy

Bernardo Fontes@bbfontes

Page 2: Melhorando Testes No Django Com O Model Mommy

@bbfontes – bernardofontes.net – github.com/berinhard

Page 3: Melhorando Testes No Django Com O Model Mommy
Page 4: Melhorando Testes No Django Com O Model Mommy

Por que testar?

Page 5: Melhorando Testes No Django Com O Model Mommy

https://github.com/MrMEEE/bumblebee-Old-and-abbandoned/commit/a047be85247755cdbe0acce6f1dafc8beb84f2ac

Page 6: Melhorando Testes No Django Com O Model Mommy

http://gizmodo.com/5048411/bsod-repeatedly-strikes-nine-inch-nails-concerts

Page 7: Melhorando Testes No Django Com O Model Mommy

Testes não são garantias

Page 8: Melhorando Testes No Django Com O Model Mommy

Testes não são garantias,mas são excelentes

indicadores

Page 9: Melhorando Testes No Django Com O Model Mommy

Por que falarsobre testes?

Page 10: Melhorando Testes No Django Com O Model Mommy

Só escrever testesnão basta

Page 11: Melhorando Testes No Django Com O Model Mommy

Teste também é código!

Page 12: Melhorando Testes No Django Com O Model Mommy

I'm watching!

Page 13: Melhorando Testes No Django Com O Model Mommy

Código deve serfácil de ler.

Page 14: Melhorando Testes No Django Com O Model Mommy

Código deve serfácil de ler.

Testes também!

Page 15: Melhorando Testes No Django Com O Model Mommy

Código deve serfácil de entender.

Page 16: Melhorando Testes No Django Com O Model Mommy

Código deve serfácil de entender.

Testes também!

Page 17: Melhorando Testes No Django Com O Model Mommy

Código deve serfácil de manter.

Page 18: Melhorando Testes No Django Com O Model Mommy

Código deve serfácil de manter.

Testes também!

Page 19: Melhorando Testes No Django Com O Model Mommy

Organização básica de um método de teste

Page 20: Melhorando Testes No Django Com O Model Mommy

No Django

Page 21: Melhorando Testes No Django Com O Model Mommy

1 – Configuração inicial do cenário de teste

Page 22: Melhorando Testes No Django Com O Model Mommy

No Django

Page 23: Melhorando Testes No Django Com O Model Mommy

2 – Execução da funcionalidade

Page 24: Melhorando Testes No Django Com O Model Mommy

No Django

Page 25: Melhorando Testes No Django Com O Model Mommy

3 – Asserções de validação

Page 26: Melhorando Testes No Django Com O Model Mommy

No Django

Page 27: Melhorando Testes No Django Com O Model Mommy

Tópico do dia: configuração inicial do cenário de teste com a criação de modelos

no Django

Page 28: Melhorando Testes No Django Com O Model Mommy

Model core.Person

Page 29: Melhorando Testes No Django Com O Model Mommy

Solução 1 - Criação dos objetos manualmente

Page 30: Melhorando Testes No Django Com O Model Mommy
Page 31: Melhorando Testes No Django Com O Model Mommy

Repetição de código em vários testes

Page 32: Melhorando Testes No Django Com O Model Mommy

Difícil manutenção

Page 33: Melhorando Testes No Django Com O Model Mommy

Solução 2 - Uso de fixtures para popular o

banco previamente

Page 34: Melhorando Testes No Django Com O Model Mommy

$ python manage.py dumpdata core.Person >> core/fixtures/persons.json

[{"pk": 1, "model": "core.person", "fields": {"bio": "Veio de algum lugar e foi para lugar nenhum", "appointment": "2013-07-02T18:30:32.960Z",

"name": "Bernardo", "gender": "M", "age": 24, "blog": "http://bernardofontes.net", "birthday": "1988-09-22", "birth_time":

"16:15:00", "nickname": "berinhard", "happy": false}}]

Page 35: Melhorando Testes No Django Com O Model Mommy
Page 36: Melhorando Testes No Django Com O Model Mommy

Gera trabalho externo aos testes

Page 37: Melhorando Testes No Django Com O Model Mommy

Gera acoplamento externo aos testes

Page 38: Melhorando Testes No Django Com O Model Mommy

Difícil manutenção depois de alterações nos models

Page 39: Melhorando Testes No Django Com O Model Mommy

Difícil manutenção depois de alterações nos models

DeserializationError: Problem installing fixture

'/home/bernardo/virtualenvs/moveleiros/project/src/core/fixtures/persons.j

son': Person has no field named u'birthday'

Page 40: Melhorando Testes No Django Com O Model Mommy

Solução 3 - Model Mommy

https://github.com/vandersonmota/model_mommy

Page 41: Melhorando Testes No Django Com O Model Mommy

pip install model_mommy

https://pypi.python.org/pypi/model_mommy

Page 42: Melhorando Testes No Django Com O Model Mommy

API para criar instâncias de models de maneira rápida

baseada em valores aleatórios

Page 43: Melhorando Testes No Django Com O Model Mommy

Model core.Person

Page 44: Melhorando Testes No Django Com O Model Mommy

Método make básico

Page 45: Melhorando Testes No Django Com O Model Mommy

Método make básico

Page 46: Melhorando Testes No Django Com O Model Mommy

Método make com sobreescrita

Page 47: Melhorando Testes No Django Com O Model Mommy

Método prepare

Page 48: Melhorando Testes No Django Com O Model Mommy

Criando vários objetos

Page 49: Melhorando Testes No Django Com O Model Mommy

Model core.Dog

Page 50: Melhorando Testes No Django Com O Model Mommy

Método make para FK

Page 51: Melhorando Testes No Django Com O Model Mommy

Método make com sobreescrita de FK

Page 52: Melhorando Testes No Django Com O Model Mommy

Método make com FK lookup

Page 53: Melhorando Testes No Django Com O Model Mommy

Método prepare com FK

Page 54: Melhorando Testes No Django Com O Model Mommy

Model core.Store

Page 55: Melhorando Testes No Django Com O Model Mommy

Objetos com relações ManyToMany

Page 56: Melhorando Testes No Django Com O Model Mommy

API para criar instâncias de models de maneira rápida

baseada em valores definidos por você evitando repetição de

código

Page 57: Melhorando Testes No Django Com O Model Mommy

mommy_recipes.py da app

Page 58: Melhorando Testes No Django Com O Model Mommy

Definição de um Recipe

Page 59: Melhorando Testes No Django Com O Model Mommy

Criando objetos com o make_recipe

Page 60: Melhorando Testes No Django Com O Model Mommy

Sobreescrita com o make_recipe

Page 61: Melhorando Testes No Django Com O Model Mommy

Vários objetos com o make_recipe

Page 62: Melhorando Testes No Django Com O Model Mommy

Sem persistência com o prepare_recipe

Page 63: Melhorando Testes No Django Com O Model Mommy

Recipes com FK

Page 64: Melhorando Testes No Django Com O Model Mommy

Recipes com callables

Page 65: Melhorando Testes No Django Com O Model Mommy

Suporte a Custom Fields

Page 66: Melhorando Testes No Django Com O Model Mommy

Sequences para campos unique

Page 67: Melhorando Testes No Django Com O Model Mommy

Ajude-nos a matar issues

Page 68: Melhorando Testes No Django Com O Model Mommy

Dê sua opinião e mande dúvidas da lista

http://bit.ly/12MU9Pv

Page 69: Melhorando Testes No Django Com O Model Mommy

Obrigado!!!

Bernardo [email protected]://bernardofontes.nethttp://github.com/berinhardhttp://twitter.com/bbfontes