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?