3.5.1 Teste de Unidade de uma View
Continuando com o desenvolvimento da aplicação utilizando o TDD, vamos agora criar mais um teste que irá demandar a existência de uma view verdadeira, ou seja, nossa aplicação terá que exibir algo para o usuário, efetivamente.
A alteração no nosso teste unitário (lists/tests.py) para a implementação desse incremento é dada abaixo:
from django.urls import resolve
from django.test import TestCase
from django.http import HttpRequest
from lists.views import home_page
class HomePageTest(TestCase):
def test_root_url_resolves_to_home_page_view(self):
found = resolve('/')
self.assertEquals(found.func, home_page)
def test_home_page_returns_correct_html(self):
request = HttpRequest()
response = home_page(request)
html = response.content.decode('utf-8')
self.assertTrue(html.startswith('<html>'))
self.assertIn('<title>To-Do lists</title>', html)
self.assertTrue(html.endswith('</html>'))De forma resumida, o novo teste, listado entre as linhas 13 e 19, faz uma chamada para nossa home_page e assegura de que o resultado inicie com a tag '<html>' e termine com '</html>' e, além disso, encontre '<title>To-Do lists</title> na mensagem retornada.
Ao executa o teste, como era de se esperar, obtemos uma falha.
Respeitando o ciclo do TDD, vamos iniciar a inclusão de código com o mínimo esforço possível para tentar fazer nosso teste passar. Desse modo, a primeira correção é fazer a função home_page receber um argumento, conforme acusado pelo erro no teste (linha 11 acima). Assim sendo, a seguir, é aprentada uma sequência de correções/reexecução dos testes, até que o teste passe por completo. Lembre-se que no TDD a intenção é sempre de tentar fazer o mínimo necessário para passar o teste.
Alteração mínima no código lists/views.py
Resultado dos testes lists/tests.py
Alteração mínima no código lists/views.py
Cuidando para que um objeto HttpResponse seja retornado.
Resultado dos testes lists/tests.py
Alteração mínima no código lists/views.py
Resultado dos testes lists/tests.py
Alteração mínima no código lists/views.py
Resultado dos testes lists/tests.py
Alteração mínima no código lists/views.py
Resultado dos testes lists/tests.py
Nesse ponto tudo parece estar correto, mas será que já finalizamos? Que tal tentarmos executar os testes funcionais para confirmarmos se realmente encerramos um ciclo do TDD?
O resultado mostra uma falha, mas isso era apenas para lembrar que ainda precisamos continuar com essa história. O início dela, de ter uma página web com um título contendo a palavra To-Do está feito.
Para encerrar essa etapa, nada melhor do que colocarmos nossas mudanças no controle de versão.
Last updated
Was this helpful?