Este repositório contém a resolução do Desafio Backend do processo seletivo da empresa Impulso Gov.
Para solucionar o desafio, foi desenvolvida uma API em Python
para consultar dados dos estabelecimentos de saúde vinculados ao SUS.
O arquivo
dados.db
foi disponibilizado pela Impulso Gov para a realização do desafio.
A API foi desenvolvida num container Docker contendo o Linux como Sistema Operacional e a linguagem Python
na versão 3.11.1.
O objetivo de criar um container para a API é garantir que quem executá-la a partir deste repositório estará com o mesmo ambiente usado durante sua criação. Dessa forma, não haverá conflitos de versão da linguagem ou incompatibilidade de Sistema Operacional.
As tecnologias utilizadas para desenvolver a API foram:
Docker
: criação de container para desenvolvimentoFastAPI
: construção da APISqlite3
: acesso ao banco de dadosPytest
: criação de testes
Para executar a API, é necessário ter o Docker e o Docker Compose instalados na sua máquina. Com este pré-requisito atendido, siga os passos abaixo para executá-la:
1 - Clone este repositório
git clone https://github.com/tainnaps/desafio-backend-impulso-gov.git
2 - Entre no diretório raiz do repositório clonado
cd desafio-backend-impulso-gov
3 - Dentro do diretório raiz (onde se encontra o arquivo docker-compose.yml
), inicie o container da API
docker-compose up
# ou inicie o container em segundo plano
docker-compose up -d
4 - Acesse a API inserindo o endereço abaixo em seu navegador web
http://127.0.0.1:8000
Caso tudo tenha ocorrido como esperado, a seguinte resposta será exibida pelo navegador:
{
"message": "Webservice OK"
}
Isso significa que a API está pronta para receber mais requisições.
Para conhecer os endpoints disponíveis na API e entender como fazer requisições para eles, acesse a documentação da API.
Foram desenvolvidos testes de integração para os endpoints da API usando pytest
e o TestClient
da FastAPI
.
Para executar os testes, siga os seguintes passos:
1 - Acesse o terminal do container da API
docker exec -it impulso-gov-backend bash
2 - No terminal do container da API, execute o comando de teste
pytest -v
NOTA: por se tratar de uma API que apenas consulta o banco de dados, sem alterá-lo, não criei um banco para o ambiente de testes, mas sei que, num caso real, o ideal seria criá-lo para não comprometer os dados de produção.