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!!!!
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