Conforme ressalta Percival (2017), utilizar o estilo de programação do TDD pode não ser algo que surja naturalmente e é importante não desistir quando surgirem as primeiras dificuldades e/ou dúvidas quanto ao seu uso.
A ideia geral é de que nada seja feito sem que exista um teste para verificar o funcionamento de tudo. Por exemplo, sabendo que nossa aplicação irá executar no django, podemos redigir um teste para nos certificarmos de que o django esteja ativo e pronto para ser utilizado.
Para isso, podemos escrever um teste conforme apresentado abaixo:
from selenium import webdriverbrowser = webdriver.Firefox()browser.get("http://localhost:8000")assert'worked successfully'in browser.title
Esse teste deve ser salvo num arquivo functional_tests.py dentro da pasta $HOME/tdd/superlists.
Feito isso, é possível executar o teste com o comando abaixo:
A execução do teste causa a abertura de uma janela do Firefox com uma mensagem de erro, conforme ilustrado abaixo:
Como era de se esperar, o teste falhou, exatamente por não conseguir encontrar uma instância ativa do django em execução.
Fazendo o teste passar
Para fazermos o teste passar é necessário colocarmos uma instância do django em execução. Para isso, o primeiro passo é a criação de um projeto que será o contêiner principal de nosso site. A criação de um projeto em django pode ser feita com a ferramenta django-admin. O comando abaixo, executado dentro da pasta superlists do nosso ambiente virtual, irá criar esse projeto para nós.
Em caso de sucesso, o comando não emite qualquer saída, mas irá criar um subdiretório superlists abaixo do diretório corrente. Parte da estrutura de diretórios do ambiente virtual com o projeto do django fica conforme apresentado na figura abaixo:
No exemplo acima, o django alerta que é necessário executar um comando para fazer a migração do projeto.
Quando você cria um novo projeto Django, ele já vem com várias aplicações padrão, como admin, auth, contenttypes e sessions. Cada uma dessas aplicações tem suas próprias tabelas e relações no banco de dados. As migrações para essas tabelas já existem, mas ainda não foram aplicadas ao banco de dados. Para aplicar essas migrações, pressionamos CONTROL-C para interromper a execução do servidor e, em seguida, executamos o comando indicado abaixo.
Agora com o servidor no ar é possível reexecutar o teste para verificar se o mesmo passa. Para isso, basta abrir um novo terminal, se conectar ao ambiente virtual, entrar no diretório superlists (primeiro nível) e executar o comando para a execução, conforme abaixo:
Como consequência da execução, será aberta uma janela do Firefox mas desta vez o servidor django será encontrado e o teste irá se comportar conforme o esperado.