1905
Comentário:
|
2276
|
Deleções são marcadas assim. | Adições são marcadas assim. |
Linha 67: | Linha 67: |
>>> f(0) | >>> fat(0) |
Linha 69: | Linha 69: |
>>> f(5) | >>> fat(5) |
Linha 75: | Linha 75: |
return x * f(x-1) | return x * fat(x-1) |
Linha 85: | Linha 85: |
Observe que o que eu quero testar eu formato igualzinho como eu usaria no modo interativo do Python (repare nos >>>). O que eu quero executar, eu ponho como >>> na frente, a saída esperada eu acrescento na linha a baixo, conforme deveria ser. |
|
Linha 86: | Linha 91: |
Pra testar é simples, {{{$ python minhasfuncoes.py}}}. Se nenhum erro acontecer, a saída é muda, nada aparece na tela. |
doctest: teste automatizado utilizando DocStrings
Você que é bom programador e cuidadoso, aposto que procuras documentar direito o código que escreves. A linguagem Python é bem amiga nesse aspecto, com a utilização de DocStrings. Por exemplo:
é uma implementação bem documentada da função fatorial dentro de um hipotético módulo minhasfuncoes.py.
Uma preocupação maior seria sempre assegurar que o que escrevemos está correto, mesmo quando procuramos melhorar ou até mesmo reescrever a implementação de uma função ou classe em Python. Mas como certificar que não quebramos nada enquanto mudamos?
A resposta está nos testes automatizados. Escolher bem o que testar e como testar é uma arte em si. Repare nos exemplos que eu escrevi para descrever a função fatorial, que tal eu usar esses exemplos como teste?
Eu poderia escrever a uma função test() e assim escrever novamente esses exemplos dentro desta função e conferir se não tem nada errado com a entrada e a saída da função.
Mas tem um jeito melhor e mais amigo de fazer isso, através do módulo doctest do Python. Aproveitando os próprios exemplos documentados e sem copiar tudo novamente (passível de falha isso).
Observe que o que eu quero testar eu formato igualzinho como eu usaria no modo interativo do Python (repare nos >>>). O que eu quero executar, eu ponho como >>> na frente, a saída esperada eu acrescento na linha a baixo, conforme deveria ser.
Pra testar é simples, $ python minhasfuncoes.py. Se nenhum erro acontecer, a saída é muda, nada aparece na tela.