2589
Comentário:
|
2600
|
Deleções são marcadas assim. | Adições são marcadas assim. |
Linha 1: | Linha 1: |
= doctest: teste automatizado utilizando DocStrings = | = doctest: Teste Automatizado Utilizando DocStrings = |
Linha 4: | Linha 4: |
A linguagem Python é bem amiga nesse aspecto, com utilização de DocStrings. | A linguagem Python é amiga do programador nesse aspecto com utilização de DocStrings. |
Linha 22: | Linha 23: |
é uma implementação documentada da função fatorial, dentro de um | é uma implementação bem documentada da função fatorial dentro de um |
Linha 29: | Linha 30: |
A resposta está nos testes automatizados que vão garantir (se bem escolhidos) que a nossa nova implemenmtação funciona como a anterior. |
A resposta está nos testes automatizados, que vai garantir que (se bem escolhidos) a nossa nova implemenmtação funcione como a anterior. |
Linha 32: | Linha 33: |
Repare nos exemplos apresentados para descrever a função fatorial, que tal usar esses exemplos como teste? Isto é possível através do módulo {{{doctest}}} do Python. vejamos como utilizar |
Repare nos exemplos apresentados para descrever a função fatorial, que tal usá-los como teste? Isto é possível através do módulo {{{doctest}}} do Python. vejamos como |
Linha 60: | Linha 58: |
O que eu quero executar e testar eu formato igualzinho como eu usaria no modo interativo do Python (repare nos >>> antes). a saída esperada eu acrescento na linha logo a baixo, |
O que se quer executar e testar formata-se igual ao que se usaria no modo interativo do Python (repare nos >>> antes). a saída esperada é indicada na linha logo a baixo, |
Linha 66: | Linha 64: |
erro acontecer a saída é muda, nada aparece na tela. Digamos que eu mude o {{{if x == 0: return 1}}} para {{{if x == 0: return 0}}}, |
erro acontecer a saída é muda, nada aparece na tela. Digamos que eu mude o {{{if x == 0: return 1}}} para {{{if x == 0: return 0}}}, |
Linha 87: | Linha 87: |
Para {{{fat(0)}}} era esperado o valor 1, veio 0. Para {{{fat(5)}}} era esperado 120, veio 0 também. |
ou seja, para {{{fat(0)}}} era esperado o valor 1, veio 0. Para {{{fat(5)}}} era esperado 120, veio 0 também. |
Linha 94: | Linha 94: |
-- RudaMoura |
doctest: Teste Automatizado Utilizando DocStrings
Um bom programador procura documentar direito o código que escreve. A linguagem Python é amiga do programador nesse aspecto com utilização de DocStrings.
Por exemplo:
é uma implementação bem documentada da função fatorial dentro de um possível 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 o que fizemos. Mas como certificar que não quebramos nada enquanto mudamos?
A resposta está nos testes automatizados, que vai garantir que (se bem escolhidos) a nossa nova implemenmtação funcione como a anterior.
Repare nos exemplos apresentados para descrever a função fatorial, que tal usá-los como teste? Isto é possível através do módulo doctest do Python. vejamos como
O que se quer executar e testar formata-se igual ao que se usaria no modo interativo do Python (repare nos >>> antes). a saída esperada é indicada na linha logo a baixo, conforme deveria ser numa seção interativa.
Para rodar o teste é simples, $ python minhasfuncoes.py. Se nenhum erro acontecer a saída é muda, nada aparece na tela.
Digamos que eu mude o if x == 0: return 1 para if x == 0: return 0, A execução do teste me dirá que
$ python minhasfuncoes.py ***************************************************************** Failure in example: fat(0) from line #1 of minhasfuncoes.fat Expected: 1 Got: 0 ***************************************************************** Failure in example: fat(5) from line #3 of minhasfuncoes.fat Expected: 120 Got: 0 ***************************************************************** 1 items had failures: 2 of 2 in minhasfuncoes.fat ***Test Failed*** 2 failures.
ou seja, para fat(0) era esperado o valor 1, veio 0. Para fat(5) era esperado 120, veio 0 também. Dois erros foram indicados através da própria documentação da função.
Para saber mais
Procure a documentação do doctest (>>> help(doctest)).
Um exemplo de uso em VerificadorDeCpf.
-- RudaMoura