Simples exemplo de TDD - Juros simples
Pequeno exemplo de TDD na linguagem Python utilizando-se de programação orientada a objeto para criar uma classe com um método que retorne o juros simples.
Este artigo é um exemplo extremamente simples de TDD (Test Driven Development) Ele compõem uma sequência de excercícios igualmente simples. Indicado para o desenvolvedor que quer aprender a técnica de TDD mas não conhece muito sobre testes unitários e nem sobre arquitetura.
Neste artigo iremos construir um pequeno código na linguagem Python utilizando a técnica de programação orientada a objetos. Nosso objetivo é definir uma classe para calcular o juros simples segundo a fórmula abaixo.
J = C.i.n
Onde:
J = juros,
C = capital,
i = taxa de empréstimo
n = períodos
Vamos imaginar o seguinte cenário: um empréstimo de R$ 16.000,00 sobre a taxa de 4% durante 4 meses.
Utilize orientação a objetos para resolver o problema.
Começando pelo teste.
# -*- coding: utf-8 -*-
import unittest
class MyCalcTest(unittest.TestCase):
def testSimples(self):
calcJuros = Juros()
calcJuros.capital = 16000;
calcJuros.taxa = 0.04;
calcJuros.n_periodos = 4;
self.assertEqual(2560, calcJuros.simples())
if __name__ == '__main__':
unittest.main()
O código não é executado pois não temos a classe Juros
nem o método simples()
, muito menos as propriedades.
Vamos fazer o mínimo para código rodar sem problemas.
class Juros:
def simples(self):
pass
Agora temos um teste falhando (sinal de progresso) e só nos resta implementar a função simples()
.
def simples(self):
return self.capital * self.taxa * self.n_periodos
Código final
# -*- coding: utf-8 -*-
import unittest
#
# Código limpo e funcionando
#
class Juros:
def simples(self):
return self.capital * self.taxa * self.n_periodos
#
# Testes
#
class MyCalcTest(unittest.TestCase):
def testSimples(self):
calcJuros = Juros()
calcJuros.capital = 16000;
calcJuros.taxa = 0.04;
calcJuros.n_periodos = 4;
self.assertEqual(2560, calcJuros.simples())
if __name__ == '__main__':
unittest.main()
Este exemplo é simples e curto, mas ele passa um lição importante, que está mais relacionado a testes unitários do que com TDD: os testes ajudam a documentar o funcionamento do código.