Season Running - Ep. 08: Executando seus testes no Docker


Olááá robotizadores! Neste post vou mostrar um exemplo de como executar seus testes em um container Docker... Lembrando que esse post é mais avançado, exige que você já tenha um básico de Docker!!! Veja mais sobre ele e como instalá-lo aqui: https://blog.umbler.com/br/containers-102-primeiros-passos-para-realizar-a-instalacao/



Introdução Básica

Para quem não conhece o Docker ainda, aqui vai uma rápida introdução. O Docker disponibiliza containers, que são mais simples que VM's para se trabalhar com virtualização de ambientes. Cada container é como se fosse uma máquina, onde você instala o S.O. e os aplicativos que precisa para rodar uma aplicação ou várias aplicações, conforme a sua necessidade. No nosso caso, vamos criar uma imagem que tenha Linux + Python 3 + Robot Framework + Libraries do Robot e, via linha de comando Docker, criar um container a partir dessa imagem e então rodar nosso teste nele, depois ele "morrerá". Ou seja, você não precisa do Python + Linux + blablabla instalados na sua máquina física, apenas o DOCKER!!!!

Veja mais detalhadamente aqui: https://blog.umbler.com/br/containers-101-como-essa-tecnologia-pode-alavancar-suas-aplicacoes/


Passo 01: Escrevendo nosso script da imagem (Dockerfile)

O script que cria a imagem Docker se chama Dockerfile, sem extensões no nome. Eu criei uma pastinha chamada "runner" dentro do meu projeto de testes e criei o arquivo assim:


No script acima eu deixei os passos comentados e explicados já, mas resumindo, nessa imagem fizemos:

Passo 01: Instanciamos o S.O. (linux)
Passo 02: Criamos volumes (são diretórios dentro do container que poderão ser visualizados da sua máquina física após um mapeamento)
Passo 03: Com os comandos do S.O. escolhido, fazemos a instalação do Python 3
Passo 04: Através do pip, instalamos o que era necessário para o RobotFramework executar nossos testes.


Passo 02: Construindo uma imagem a partir de um Dockerfile ("buildando")

Agora, via linha de comando, vamos construir nossa imagem. Dentro do projeto, digite o comando no formato abaixo e passe no último argumento o local do seu Dockerfile:

docker build -t nome_da_sua_imagem ./diretorio/do/seu/dockerfile

Exemplo:
Exemplo do comando <docker build>

Se for a primeira vez que você está construindo essa imagem, ele irá baixar a imagem do S.O. e talvez demore um pouquinho, aguarde até finalizar!!! Após finalizar confira se aparece Successfully built, como no exemplo abaixo:
Resultado do comando <docker build> da nossa imagem

Se você digitar o comando: 

docker images

Verá as imagens já construídas ou baixadas no seu Docker.

#FICAADICA: a coluna TAG identifica a versão da sua imagem.
Resultado do comando <docker images> após construir nossa imagem

Prontinho, nossa imagem está construída, bora rodar ela e executar nossos testes???


Passo 03: Executando o Robot Framework via Docker com a nossa imagem

Agora o comando ficará grandão, deverá seguir o formato:

docker run --rm --name execucao_robot -v "diretorio_local":diretorio_container nome_da_imagem:TAG comando que executará os testes do robot

O comando acima roda o container (docker run), utilizando a imagem na versão que quero (nome_da_imagem:TAG), mapeando os volumes necessários entre minha máquina e o container (-v "diretorio_local":diretorio_container), executa o comando que passo no final (comando que executará os testes do robot) e, após finalizar, ele remove ("mata") esse container automaticamente (--rm).

Fica mais claro com o exemplo abaixo, veja:

docker run --rm --name execucao_robot -v "C:\RobotBlog\ExemploDocker\suites":/opt/robotframework/tests -v "C:\RobotBlog\ExemploDocker\results":/opt/robotframework/results robot_runner:latest robot -d /opt/robotframework/results -N "Minha suíte executada no docker!" /opt/robotframework/tests

- O argumento amarelo é onde mapeio meus diretórios locais x diretórios do container
- Chamo nossa imagem na versão latest no argumento roxo
- E informo o comando que quero que ele execute DENTRO do container, por isso passo o diretório dos testes de DENTRO do container, veja!!!


Resultado do comando <docker run> na nossa imagem, onde  foi executado um comando do Robot Framework

#FICAADICA: Como você mapeou os diretórios locais x container, então na sua pasta local (exemplo: C:\RobotBlog\ExemploDocker\results) também estarão os outputs do teste!!!

E aí??? Curtiu?? Usar Docker facilita a execução de testes em ambientes na nuvem e CI, algumas empresas tem repositórios de imagens Docker, você pode escrever uma imagem e ela pode ser disponibilizada para outras pessoas, muito útil e facilita nossa vida!!!


Extra: Use imagens públicas!!!

Siiim, a galera cria imagens genéricas e disponibilizam no Docker Hub, a imagem do FEDORA utilizada no nosso exemplo é uma imagem pública!! Veja que ela foi baixada durante o build.

Se você preferir busque imagens prontas que te sirvam, inclusive deixo aqui a dica de uma imagem para o Robot Framework executar testes WEB, essa imagem já tem tudo instalado, até os drivers dos navegadores, e os testes não utilizam o SEU navegador, isso mesmo, os testes são executados DENTRO do container, assim seu browser fica livre aí para você usar!!! Leia atentamente as instruções do criador (aba Overview) e tente usar para seus testes WEB!!! Segue link: https://hub.docker.com/r/ppodgorsek/robot-framework/dockerfile

Até mais robotizadores dockerzeiros!!!!

Comentários

Postagens mais visitadas deste blog

[ATUALIZADO] Season Libraries - Ep. 01: Library Faker para informações aleatórias e fakes

Novo Curso: Robot Framework com Playwright e GitHub Actions

Season WEB Testing - Ep. 03: Open Browser - Chrome Options