3.1 Configuração do Ambiente

Considerando a aplicação que será desenvolvida, ela fará uso do framework Django e para realizarmos o TDD, também precisaremos do Selenium. Segue abaixo a instrução para a instalação de ambos.Após a instalação das ferramentas básicas, conforme apresentado na Seção 1.2, a seguir são apresentadas as demais configurações para dar início ao desenvolvimento da aplicação exemplo com TDD.

O primeiro passo é verificarmos as versões das ferramentas já instaladas. Os comandos a seguir permitem fazer tal verificação.

$ pyenv --version
pyenv 2.4.3
    
$ pyenv virtualenvs
  3.8.10/envs/superlists (created from /home/tdd/.pyenv/versions/3.8.10)
  superlists (created from /home/tdd/.pyenv/versions/3.8.10)

$ pyenv virtualenv-delete superlists
pyenv-virtualenv: remove /home/tdd/.pyenv/versions/3.8.10/envs/superlists? (y/N) y

$ git --version
git version 2.34.1

Caso tenha perdido os passos dessa instalação, retorne à Seção 1.2 e proceda a configuração inicial do ambiente.

Com essas ferramentas instaladas e as variáveis de ambiente definidas, é possível agora iniciarmos a instalação das ferramentas do Python dentro do ambiente virtual criado anteriormente.

Configurando o Ambiente Virtual

O primeiro passo para dar início ao desenvolvimento da nossa aplicação é criação e configuração do ambiente virtual. Para isso, vamos executar os comandos abaixo:

$ mkdir superlists
$ cd $HOME/superlists
$ pyenv virtualenv 3.10.12 superlists
$ pyenv activate superlists
$ (superlists) tdd@mlp:~/superlists$

Ao final da execução do comando pyenv activate superlists, observa-se uma pequena mudança no prompt de comando, ao invés de aparecer apenas um sinal de $, o prompt passa a ser precedido por (superlists)$ , indicando que você está conectado ao ambiente virtual.

Os comandos a seguir mostram como desativar e ativar o virtualenv. Ou seja, estando no ambiente virtual, basta usar o comando deactivate que você deixa o ambiente. Se necessitar retornar, basta executar o comando workon superlists.

(superlists) $ pyenv deactivate 

tdd@mlp:~/superlists$

Instalação do Django e Selenium dentro do Ambiente Virtual

O django é um framework para construção de sistemas Web em Python e o Selenium é uma ferramenta de captura e reprodução que permite a execução de testes automatizados via navegador Web. Para instalar ambas as ferramentas e utilizá-las em nossos projetos, primeiro vamos criar o arquivo denominado requirements.txt e, dentro desse arquivo incluírmos o seguinte conteúdo:

django==5.0.6
selenium==4.22.0

A vantagens de usarmos o arquivo requirements.txt é que deixamos documentadas as versões dos plugins e ferramenas que estamos utilizando. Nesse caso, estamos instalando o Django e Selenium nas versões, 5.0.6 e 4.22.0, respectivamente. Para proceder com a instalação, estando com o ambiente virtual ativado, basta executar o comando pip, conforme abaixo:

tdd@mlp:~/superlists$ pyenv activate superlists
(superlists) auri@av:~/superlists$ pip install -r requirements.txt
Collecting django==5.0.6
  Using cached Django-5.0.6-py3-none-any.whl (8.2 MB)
Collecting selenium==4.22.0
  Downloading selenium-4.22.0-py3-none-any.whl (9.4 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 9.4/9.4 MB 17.4 MB/s eta 0:00:00
Collecting sqlparse>=0.3.1
  Using cached sqlparse-0.5.0-py3-none-any.whl (43 kB)
Collecting asgiref<4,>=3.7.0
  Using cached asgiref-3.8.1-py3-none-any.whl (23 kB)
Collecting trio-websocket~=0.9
  Downloading trio_websocket-0.11.1-py3-none-any.whl (17 kB)
Collecting urllib3[socks]<3,>=1.26
  Downloading urllib3-2.2.2-py3-none-any.whl (121 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 121.4/121.4 kB 5.0 MB/s eta 0:00:00
Collecting certifi>=2021.10.8
  Downloading certifi-2024.6.2-py3-none-any.whl (164 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 164.4/164.4 kB 4.8 MB/s eta 0:00:00
Collecting typing_extensions>=4.9.0
  Using cached typing_extensions-4.12.2-py3-none-any.whl (37 kB)
Collecting websocket-client>=1.8.0
  Downloading websocket_client-1.8.0-py3-none-any.whl (58 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 58.8/58.8 kB 2.9 MB/s eta 0:00:00
Collecting trio~=0.17
  Downloading trio-0.25.1-py3-none-any.whl (467 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 467.7/467.7 kB 3.1 MB/s eta 0:00:00
Collecting sortedcontainers
  Downloading sortedcontainers-2.4.0-py2.py3-none-any.whl (29 kB)
Collecting sniffio>=1.3.0
  Downloading sniffio-1.3.1-py3-none-any.whl (10 kB)
Collecting attrs>=23.2.0
  Downloading attrs-23.2.0-py3-none-any.whl (60 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 60.8/60.8 kB 6.8 MB/s eta 0:00:00
Collecting idna
  Downloading idna-3.7-py3-none-any.whl (66 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 66.8/66.8 kB 6.6 MB/s eta 0:00:00
Collecting exceptiongroup
  Downloading exceptiongroup-1.2.1-py3-none-any.whl (16 kB)
Collecting outcome
  Downloading outcome-1.3.0.post0-py2.py3-none-any.whl (10 kB)
Collecting wsproto>=0.14
  Downloading wsproto-1.2.0-py3-none-any.whl (24 kB)
Collecting pysocks!=1.5.7,<2.0,>=1.5.6
  Downloading PySocks-1.7.1-py3-none-any.whl (16 kB)
Collecting h11<1,>=0.9.0
  Downloading h11-0.14.0-py3-none-any.whl (58 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 58.3/58.3 kB 7.3 MB/s eta 0:00:00
Installing collected packages: sortedcontainers, websocket-client, urllib3, typing_extensions, sqlparse, sniffio, pysocks, idna, h11, exceptiongroup, certifi, attrs, wsproto, outcome, asgiref, trio, django, trio-websocket, selenium
Successfully installed asgiref-3.8.1 attrs-23.2.0 certifi-2024.6.2 django-5.0.6 exceptiongroup-1.2.1 h11-0.14.0 idna-3.7 outcome-1.3.0.post0 pysocks-1.7.1 selenium-4.22.0 sniffio-1.3.1 sortedcontainers-2.4.0 sqlparse-0.5.0 trio-0.25.1 trio-websocket-0.11.1 typing_extensions-4.12.2 urllib3-2.2.2 websocket-client-1.8.0 wsproto-1.2.0

[notice] A new release of pip is available: 23.0.1 -> 24.1
[notice] To update, run: python -m pip install --upgrade pip
(superlists) tdd@mlp:~$ 

O Selenium permite a execução dos testes em vários navegadores mas, para cada um deles, é necessário baixar um driver correspondente. No nosso exemplo, faremos o download dos drivers para Firefox, denominado de Gecko Driver, e Google Chrome, denominado Chrome Driver, conforme descrito a seguir. Você deve baixar o driver na versão compatível com a de seu navegador web. No caso abaixo, utilizamos o Gecko Driver 0.34.0 e o ChromeDriver 126.0.6478.63, ambos para sistemas Linux 64 bits.

Primeiro é necessário fazer o download dos arquivos compactados com os drivers acima e, em seguida, a instalação de ambos os drivers é feita simplesmente descompactando o conteúdo dos arquivos dentro da pasta /home/mlptdd/.pyenv/versions/3.10.2/envs/superlists/bin, conforme apresentado a seguir:

$ cd $HOME/.pyenv/bin
$ wget https://github.com/mozilla/geckodriver/releases/download/v0.34.0/geckodriver-v0.34.0-linux64.tar.gz
$ tar zxvf geckodriver-v0.34.0-linux64.tar.gz

$ wget https://storage.googleapis.com/chrome-for-testing-public/126.0.6478.63/linux64/chromedriver-linux64.zip
$ unzip chromedriver-linux64.zip 
$ mv chromedriver-linux64/chromedriver .

$ rm -rf geckodriver-v0.34.0-linux64.tar.gz chromedriver-linux64*

Feita as instalações, é possível conferir as versões dos drivers com os comandos abaixo:

$ cd $HOME/.pyenv/bin
$ ./geckodriver --version
geckodriver 0.34.0 (c44f0d09630a 2024-01-02 15:36 +0000)

The source code of this program is available from
testing/geckodriver in https://hg.mozilla.org/mozilla-central.

This program is subject to the terms of the Mozilla Public License 2.0.
You can obtain a copy of the license at https://mozilla.org/MPL/2.0/.
./chromedriver --version
ChromeDriver 126.0.6478.63 (df799988fdc9c52db48650316d53800b1e9aa69e-refs/branch-heads/6478_56@{#5})

Pronto. Ao final de todos esses passos estamos prontos para dar início ao desenvolvimento de nossa aplicação com base no TDD. Vamos lá!?

Last updated