0
Python com TDD  Código Python testado PragmaticamenteIV Encontro do PUG-PE
Sobre Rodrigo Alves Vieira * Recife, Pernambuco * Programador Ruby há mais de um ano * Pythonista fase beta * Ama Rock n r...
Começo de conversa...   Programadores de qualquer linguagemprecisam de Frameworks e Suítes de Testes   Automatizados (De p...
O Python tem o:unittest
 O unittest - também chamado de PyUnit-  é um Framework built-in do Python deTestes Unitários, baseado no JUnit(Java) de E...
Vantagens *   É uma biblioteca padrão do Python. *   É muito prática. Curva mínima de aprendizado. *   Está presente em to...
Composto por 3 classes         principais * TestCase* TestSuite* TextTestRunner 
Pilares do Framework* TestCase    Providencia métodos próprios (assertEqual,    assertTrue, assertNotEqual) que geram mens...
Pilares do Framework*  TestCase* TestSuite    É um agregador de testes, classe poderosa que pode    mesclar vários testes ...
Pilares do Framework*  TestCase*  TestSuite* TextTestRunner     Mostra os nomes dos testes conforme eles são    executados...
Comece testando o código   que você quer ter!
unittest.TestCaseque obviamente....
Falha!
Completamos o primeiro passo dociclo do TDD: Escrevemos um testeque especifica como queremos ocódigo funcionando.Agora esc...
Ready.... Go!
Fizemos o primeiro teste passar...Agora vem a.... 
Refatoração
Aqui pensamosatensiosamente no queos testes estão fazendo.Melhoramos a qualidade do código fonte e seu   teste e removemos...
Dica!Execute os testes com o argumento      "-v" e veja o resultado  individualizado de cada teste!   ~% python teste_avia...
Dica!  Execute testes específicos interativamente!       Digamos que o arquivo que contém os testes        (test_aviao.py)...
unittest.TestSuite   Uma ferramenta incrível pra    agrupar testes individuais eorganizar "pilhas" de testes, mesmoem dife...
Criando uma suíte de testes Ou ainda melhor.....
A classe TestSuite torna ainda mais poderosa sua suíte detestes porque você pode importar quantos módulos você  quiser con...
Quando eu disse aninhá-los eu disse que você  pode aninhar até outras suítes de teste!Um suíte de testes que executa outra...
unittest.TextTestRunnerNaturalmente, testes são documentaçãotambém, então, nada mais legal do que  tê-los disponíveis como...
Bom, é isso que o TextTestRunner faz cada vez que o  invocamos com "unittest.main()" no final do arquivo                  ...
Nossa suíte final de testes 
O Resultado
Mais informações:help(unittest)
Isso é tudo pessoal!          Dúvidas?!          Opiniões?!twitter: @rodrigo3n | rodrigo3n@gmail.comhttp://rodrigo3n.herok...
Python com TDD
Python com TDD
Upcoming SlideShare
Loading in...5
×

Python com TDD

1,292

Published on

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,292
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
25
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Transcript of "Python com TDD"

  1. 1. Python com TDD Código Python testado PragmaticamenteIV Encontro do PUG-PE
  2. 2. Sobre Rodrigo Alves Vieira * Recife, Pernambuco * Programador Ruby há mais de um ano * Pythonista fase beta * Ama Rock n roll, Indie e Blues :D * rodrigo3n.heroku.com * github.com/rodrigo3n * @rodrigo3n
  3. 3. Começo de conversa...   Programadores de qualquer linguagemprecisam de Frameworks e Suítes de Testes Automatizados (De preferência!) , praassegurar o funcionamento apropriado do código, seja ele de um aplicativo em produção ou uma biblioteca Open Source. 
  4. 4. O Python tem o:unittest
  5. 5.  O unittest - também chamado de PyUnit-  é um Framework built-in do Python deTestes Unitários, baseado no JUnit(Java) de Erich Gamma e no Smalltalk Testing Framework do Kent Beck(O cara que idealizou o TDD em 1999).  Criado em 2001 por Steve Purcell estácom o Python desde a versão 2.1 em sua biblioteca padrão.
  6. 6. Vantagens * É uma biblioteca padrão do Python. * É muito prática. Curva mínima de aprendizado. * Está presente em todas as implementações da Linguagem. * É útil pra qualquer projeto Python!
  7. 7. Composto por 3 classes principais * TestCase* TestSuite* TextTestRunner 
  8. 8. Pilares do Framework* TestCase Providencia métodos próprios (assertEqual, assertTrue, assertNotEqual) que geram mensagens mais precisas pra os testes. *  TestSuite*  TextTestRunner
  9. 9. Pilares do Framework*  TestCase* TestSuite  É um agregador de testes, classe poderosa que pode mesclar vários testes de diferentes módulos e executá-los como um todo.  * TextTestRunner
  10. 10. Pilares do Framework*  TestCase*  TestSuite* TextTestRunner  Mostra os nomes dos testes conforme eles são executados, assim como os erros ocorridos. E um resumo dos resultados no fim da execução
  11. 11. Comece testando o código que você quer ter!
  12. 12. unittest.TestCaseque obviamente....
  13. 13. Falha!
  14. 14. Completamos o primeiro passo dociclo do TDD: Escrevemos um testeque especifica como queremos ocódigo funcionando.Agora escreveremos apenas códigosuficiente pra fazer o código passar!
  15. 15. Ready.... Go!
  16. 16. Fizemos o primeiro teste passar...Agora vem a.... 
  17. 17. Refatoração
  18. 18. Aqui pensamosatensiosamente no queos testes estão fazendo.Melhoramos a qualidade do código fonte e seu teste e removemos duplicação. 
  19. 19. Dica!Execute os testes com o argumento "-v" e veja o resultado individualizado de cada teste! ~% python teste_aviao.py -v
  20. 20. Dica! Execute testes específicos interativamente! Digamos que o arquivo que contém os testes (test_aviao.py) tem 40 testes, mas você só quer executar 2 deles, então:~% python test_aviao.py testeAviao.test_aviao_criado testeAviao.test_motor
  21. 21. unittest.TestSuite Uma ferramenta incrível pra agrupar testes individuais eorganizar "pilhas" de testes, mesmoem diferentes arquivos e módulos, criando Suites de Teste.
  22. 22. Criando uma suíte de testes Ou ainda melhor.....
  23. 23. A classe TestSuite torna ainda mais poderosa sua suíte detestes porque você pode importar quantos módulos você quiser contendo uma quantidade qualquer de testes.Então você pode aninhá-los pra dinamizar a execução...
  24. 24. Quando eu disse aninhá-los eu disse que você pode aninhar até outras suítes de teste!Um suíte de testes que executa outras suítes de testes.. hmmm. massa!
  25. 25. unittest.TextTestRunnerNaturalmente, testes são documentaçãotambém, então, nada mais legal do que tê-los disponíveis como texto puro!
  26. 26. Bom, é isso que o TextTestRunner faz cada vez que o invocamos com "unittest.main()" no final do arquivo test_aviao.py!  unittest.main() gera um objeto TestSuite que contém todos os testes que começam com "test" (como testAviaoCriado() por exemplo), então ele invoca oTextTestRunner que executa cada um desses métodos e manda o resultado pra o desenvolvedor via stderr!
  27. 27. Nossa suíte final de testes 
  28. 28. O Resultado
  29. 29. Mais informações:help(unittest)
  30. 30. Isso é tudo pessoal! Dúvidas?! Opiniões?!twitter: @rodrigo3n | rodrigo3n@gmail.comhttp://rodrigo3n.heroku.com | http://bit.ly/python-com-tdd
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×