Estou aprendendo ainda Python, então se o código puder ser melhorado, pode comentar ;)
Então… Eu estava assistindo as aulas do Python for Zumbies e me deparei com alguns códigos para fazer. Porém quando se inicia o aprendizado de alguma linguagem você quer ver seu código funcionando, para mim existem duas forma de ver meu software funcionando:
- Automatizar os testes com o software;
- Entregar o projeto para o usuário (que pode até mesmo ser eu).
Eu como usuário gosto de usar software apenas “funcional”, i. e., para que que eu vou usar uma Sequência de Fibonacci ou um software que contabiliza médias de notas se eu não estou tendo aulas?
Então a melhor forma que resolvi testar foi criando testes automatizados.
Primeiro vou criar o arquivo de teste:
Após estudar um pouco cheguei no seguinte código:
import unittest from fib import fib class FibTestCase(unittest.TestCase): def test_fib1(self): self.assertEqual(fib(1), 1) def test_fib0(self): self.assertEqual(fib(0), 0) def test_fib6(self): self.assertEqual(fib(6), 8) def test_fib6_again(self): self.assertTrue(fib(6) == 8) unittest.main()
Se esse código for executado gera o seguinte erro:
% python fib_test.py Traceback (most recent call last): File "fib_test.py", line 2, in <module> from fib import fib ImportError: No module named 'fib'
Até aí tudo bem, eu ainda não criei o código fibonacci, vamos criar então:
# fib.py def fib(n): if n < 2: return(n) a = fib(n-1) b = fib(n-2) return(a+b)
E executando, temos:
% python fib_test.py .... ---------------------------------------------------------------------- Ran 4 tests in 0.000s OK
Depois que aprendi a orientação a objetos em python eu fiz alguns exemplos, entre eles:
Primeiro o teste:
import unittest from televisao import Televisao class TelevisaoTestCase(unittest.TestCase): def setUp(self): self.tv_sala = Televisao('Sala') def test_uma_nova_televisao_deve_ser_desligada(self): self.assertFalse(self.tv_sala.ligada) def test_eu_posso_mudar_o_status_para_ligada(self): self.tv_sala.ligada = True self.assertTrue(self.tv_sala.ligada) def test_eu_posso_mudar_o_canal(self): self.tv_sala.canal_mais_um selft.assertEqual(self.tv_sala.canal, 2) unittest.main()
Agora a classe:
class Televisao: def __init__(self, local): self.ligada = False self.canal = 1 self.local = local
Esse exemplo da classe
Televisao
eu fiz ao estilo TDD, criava o teste e depois o código.Ficou faltando um método na classe
Televisao
, se estiver estudando semelhante a mim, adiciona lá ;)Confira o Python for Zumbies tem várias vídeo aula em português e diversos exercícios bem práticos!
“26.3. Unittest — Unit Testing Framework — Python 3.4.1 Documentation.” Accessed September 1, 2014. https://docs.python.org/3/library/unittest.html.
“Python Para Zumbis Com Fernando Masanori.” Accessed September 2, 2014. http://pycursos.com/python-para-zumbis/.
Comentários