Melhorando Testes No Django Com O Model Mommy

4.542 visualizações

Publicada em

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

Publicada em: Tecnologia
0 comentários
5 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
4.542
No SlideShare
0
A partir de incorporações
0
Número de incorporações
2.846
Ações
Compartilhamentos
0
Downloads
35
Comentários
0
Gostaram
5
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Melhorando Testes No Django Com O Model Mommy

  1. 1. Melhores Testes no Django Apresentado o Model Mommy Bernardo Fontes @bbfontes
  2. 2. @bbfontes – bernardofontes.net – github.com/berinhard
  3. 3. Por que testar?
  4. 4. https://github.com/MrMEEE/bumblebee-Old-and-abbandoned/commit/a047be85247755cdb e0acce6f1dafc8beb84f2ac
  5. 5. http://gizmodo.com/5048411/bsod-repeatedly-strikes-nine-inch-nails-concerts
  6. 6. Testes não são garantias
  7. 7. Testes não são garantias, mas são excelentes indicadores
  8. 8. Por que falar sobre testes?
  9. 9. Só escrever testes não basta
  10. 10. Teste também é código!
  11. 11. I'm watching!
  12. 12. Código deve ser fácil de ler.
  13. 13. Código deve ser fácil de ler. Testes também!
  14. 14. Código deve ser fácil de entender.
  15. 15. Código deve ser fácil de entender. Testes também!
  16. 16. Código deve ser fácil de manter.
  17. 17. Código deve ser fácil de manter. Testes também!
  18. 18. Organização básica de um método de teste
  19. 19. No Django
  20. 20. 1 – Configuração inicial do cenário de teste
  21. 21. No Django
  22. 22. 2 – Execução da funcionalidade
  23. 23. No Django
  24. 24. 3 – Asserções de validação
  25. 25. No Django
  26. 26. Tópico do dia: configuração inicial do cenário de teste com a criação de modelos no Django
  27. 27. Model core.Person
  28. 28. Solução 1 - Criação dos objetos manualmente
  29. 29. Repetição de código em vários testes
  30. 30. Difícil manutenção
  31. 31. Solução 2 - Uso de fixtures para popular o banco previamente
  32. 32. $ 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}}]
  33. 33. Gera trabalho externo aos testes
  34. 34. Gera acoplamento externo aos testes
  35. 35. Difícil manutenção depois de alterações nos models
  36. 36. Difícil manutenção depois de alterações nos models DeserializationError: Problem installing fixture '/home/bernardo/virtualenvs/moveleiro s/project/src/core/fixtures/persons.j son': Person has no field named u'birthday'
  37. 37. Solução 3 - Model Mommy https://github.com/vandersonmota/model_mommy
  38. 38. pip install model_mommy https://pypi.python.org/pypi/model_mommy
  39. 39. API para criar instâncias de models de maneira rápida baseada em valores aleatórios
  40. 40. Model core.Person
  41. 41. Método make básico
  42. 42. Método make básico
  43. 43. Método make com sobreescrita
  44. 44. Método prepare
  45. 45. Criando vários objetos
  46. 46. Model core.Dog
  47. 47. Método make para FK
  48. 48. Método make com sobreescrita de FK
  49. 49. Método make com FK lookup
  50. 50. Método prepare com FK
  51. 51. Model core.Store
  52. 52. Objetos com relações ManyToMany
  53. 53. API para criar instâncias de models de maneira rápida baseada em valores definidos por você evitando repetição de código
  54. 54. mommy_recipes.py da app
  55. 55. Definição de um Recipe
  56. 56. Criando objetos com o make_recipe
  57. 57. Sobreescrita com o make_recipe
  58. 58. Vários objetos com o make_recipe
  59. 59. Sem persistência com o prepare_recipe
  60. 60. Recipes com FK
  61. 61. Recipes com callables
  62. 62. Suporte a Custom Fields
  63. 63. Sequences para campos unique
  64. 64. Ajude-nos a matar issues
  65. 65. Dê sua opinião e mande dúvidas da lista http://bit.ly/12MU9Pv
  66. 66. Obrigado!!! Bernardo Fontes falecomigo@bernardofontes.net http://bernardofontes.net http://github.com/berinhard http://twitter.com/bbfontes

×