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:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Passo 01: Instancio uma imagem de SO linux, no caso usei o FEDORA, | |
# mas pode ser o Ubunto, Alpine, Debian, etc... | |
# Procure no Docker Hub a imagem que desejar! https://hub.docker.com | |
FROM fedora:29 | |
# Passo 02: Vou mapear os volumes (diretórios do container) onde deixarei | |
# os testes (inputs) e os resultados (outputs). | |
VOLUME /opt/robotframework/results | |
VOLUME /opt/robotframework/tests | |
# Passo 03: Vou rodar os comandos que instalam tudo que preciso para rodar o robot | |
# nesse container linux. Como estou usando o FEDORA, os comandos aqui executados | |
# devem ser compatíveis com ele!! | |
RUN dnf upgrade -y && dnf install -y python37 | |
# Passo 04: Instalo o Robot e as libraries que precisarei. No caso abaixo, | |
# especifiquei a versão do robot que eu quero e não especifiquei a da | |
# library Faker, com isso ele pegara a mais recente liberada. | |
# Obs.: As barras são para indicar quebra de linha, mas o comando é um só, | |
# é como se eu tivesso rodando tudo numa linha só. | |
RUN pip3 install \ | |
robotframework==3.1.1 \ | |
robotframework-faker |
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!!!!
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
Postar um comentário