Slide 1

Slide 1 text

TDD @andrewsmedina Sunday, May 5, 2013

Slide 2

Slide 2 text

tdd não é • teste depois de desenvolver • não deixa seu código a prova de erros Sunday, May 5, 2013

Slide 3

Slide 3 text

tdd é • desenvolvimento dirigido a testes • teste antes do código • ajuda no foco • garante que o comportamento esperado está acontecendo (ou não) Sunday, May 5, 2013

Slide 4

Slide 4 text

Sunday, May 5, 2013

Slide 5

Slide 5 text

show me the code! Sunday, May 5, 2013

Slide 6

Slide 6 text

import unittest class PrimosTest(unittest.TestCase): def test_menor_que_dois_nao_eh_primo(self): self.assertFalse(eh_primo(1)) Sunday, May 5, 2013

Slide 7

Slide 7 text

E =================================================== =================== ERROR: test_menor_que_dois_nao_eh_primo (__main__.PrimosTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "teste_primos.py", line 6, in test_menor_que_dois_nao_eh_primo self.assertFalse(eh_primo(1)) NameError: global name 'eh_primo' is not defined ---------------------------------------------------------------------- Ran 1 test in 0.000s FAILED (errors=1) Sunday, May 5, 2013

Slide 8

Slide 8 text

def eh_primo(numero): if numero < 2: return False Sunday, May 5, 2013

Slide 9

Slide 9 text

. ---------------------------------------------------------------------- Ran 1 test in 0.000s OK Sunday, May 5, 2013

Slide 10

Slide 10 text

import unittest from primos import eh_primo class PrimosTest(unittest.TestCase): def test_menor_que_dois_nao_eh_primo(self): self.assertFalse(eh_primo(1)) def test_primos(self): self.assertTrue(eh_primo(2)) self.assertTrue(eh_primo(7)) self.assertTrue(eh_primo(17)) Sunday, May 5, 2013

Slide 11

Slide 11 text

.F =================================================== =================== FAIL: test_primos (__main__.PrimosTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "teste_primos.py", line 11, in test_primos self.assertTrue(eh_primo(2)) AssertionError: None is not true ---------------------------------------------------------------------- Ran 2 tests in 0.000s FAILED (failures=1) Sunday, May 5, 2013

Slide 12

Slide 12 text

def eh_primo(numero): if numero < 2: return False qtd_divisiveis = 0 for n in range(2, numero+1): if numero % n == 0: qtd_divisiveis += 1 return qtd_divisiveis == 1 Sunday, May 5, 2013

Slide 13

Slide 13 text

.. ---------------------------------------------------------------------- Ran 2 tests in 0.000s OK Sunday, May 5, 2013

Slide 14

Slide 14 text

def eh_primo(numero): if numero < 2: return False for n in range(2, numero): if numero % n == 0: return False return True Sunday, May 5, 2013

Slide 15

Slide 15 text

.. ---------------------------------------------------------------------- Ran 2 tests in 0.000s OK Sunday, May 5, 2013

Slide 16

Slide 16 text

import unittest from primos import eh_primo class PrimosTest(unittest.TestCase): def test_menor_que_dois_nao_eh_primo(self): self.assertFalse(eh_primo(1)) def test_primos(self): self.assertTrue(eh_primo(2)) self.assertTrue(eh_primo(7)) self.assertTrue(eh_primo(17)) def test_nao_primos(self): self.assertFalse(eh_primo(20)) self.assertFalse(eh_primo(33)) self.assertFalse(eh_primo(45)) Sunday, May 5, 2013

Slide 17

Slide 17 text

... ---------------------------------------------------------------------- Ran 3 tests in 0.000s OK Sunday, May 5, 2013

Slide 18

Slide 18 text

obrigado! @andrewsmedina Sunday, May 5, 2013