Este projeto foi desenvolvido durante o período de Curso da Trybe 🚀
O projeto tem por objetivo a avaliação e prática dos conhecimentos adquiridos na Trybe visando o cumprimento dos requisitos solicitados.
Neste projeto foi implementado análises a partir de um conjunto de dados sobre empregos. As implementações foram incorporadas a um aplicativo Web desenvolvido com Flask (um framework web muito popular na comunidade Python). Foram desenvolvido testes para a implementação de uma análise de dados.
E, por fim, foi implemetado uma rota e view para um recurso novo na aplicação Web!
Os dados foram extraídos do site Glassdoor e obtidos através do Kaggle, uma plataforma disponiblizando conjuntos de dados para cientistas de dados.
🚵 Habilidades desenvolvidas:
- Utilizar terminal interativo do Python.
- Utilizar estruturas condicionais e de repetição.
- Utilizar funções built-in do Python.
- Utilizar tratamento de exceções.
- Realizar a manipulação de arquivos.
- Escrever funções no Python.
- Escrever testes com Pytest.
- Escrever módulos próprios e importá-los em outros códigos.
🧱 Estrutura do Projeto
Este repositório já contém um template com a estrutura de diretórios e arquivos, tanto de código quanto de teste criados. Veja abaixo:
Legenda:
🔸Arquivos que não podem ser alterados
🔹Arquivos alterados para cumprir com os requisitos propostos no desenvolvimento.
.
├──🔸README.md
├──🔸Dockerfile
├──🔸docker-compose.yml
├──🔸dev-requirements.txt
├──🔸requirements.txt
├── src
│ ├──🔸app.py
│ ├──🔸brazilian_jobs.py
│ ├──🔸counter.py
│ ├──🔹insights.py
│ ├──🔸jobs.csv
│ ├──🔹jobs.py
│ ├──🔸more_insights.py
│ ├──🔹routes_and_views.py
│ ├──🔸sorting.py
│ └── templates
│ ├──🔸base.jinja2
│ ├── includes
│ │ └──🔸nav.jinja2
│ ├──🔸index.jinja2
│ ├──🔸job.jinja2
│ └──🔸list_jobs.jinja2
├── tests
│ ├──🔸__init__.py
│ ├──🔸conftest.py
│ ├──🔸marker.py
│ ├── brazilian
│ │ ├──🔸__init__.py
│ │ ├──🔸conftest.py
│ │ ├──🔸mocks.py
│ │ ├──🔹test_brazilian_jobs.py
│ ├── counter
│ │ ├──🔸__init__.py
│ │ ├──🔸conftest.py
│ │ ├──🔸mocks.py
│ │ ├──🔹test_counter.py
│ ├── mocks
│ │ ├──🔸job_1.html
│ │ ├──🔸jobs.csv
│ │ ├──🔸jobs_with_industries.csv
│ │ ├──🔸jobs_with_salaries.csv
│ │ └──🔸jobs_with_types.csv
│ ├── sorting
│ │ ├──🔸__init__.py
│ │ ├──🔸conftest.py
│ │ ├──🔸mocks.py
│ │ └──🔹test_sorting.py
│ ├──🔸test_flask_app.py
│ ├──🔸test_insights.py
│ ├──🔸test_jobs.py
│ ├──🔸test_more_insights.py
│ └──🔸test_routes_and_views.py
🎛 Linter
Para garantir a qualidade do código, foi utilizado neste projeto o linter Flake8
.
Assim o código estará alinhado com as boas práticas de desenvolvimento, sendo mais legível
e de fácil manutenção! Para rodá-lo localmente no projeto, execute o comandos abaixo:
python3 -m flake8
🏕️ Ambiente Virtual
O Python oferece um recurso chamado de ambiente virtual, onde permite sua máquina rodar sem conflitos, diferentes tipos de projetos com diferentes versões de bibliotecas.
- criar o ambiente virtual
$ python3 -m venv .venv
- ativar o ambiente virtual
$ source .venv/bin/activate
- instalar as dependências no ambiente virtual
$ python3 -m pip install -r dev-requirements.txt
Com o seu ambiente virtual ativo, as dependências serão instaladas neste ambiente. Quando precisar desativar o ambiente virtual, execute o comando "deactivate". Lembre-se de ativar novamente quando voltar a desenvolver no projeto.
O arquivo dev-requirements.txt
contém todas as dependências que são utilizadas no projeto.
🛠 Testes
Para executar os testes certifique-se de que você está com o ambiente virtual ativado.
Executar os testes
$ python3 -m pytest
O arquivo pyproject.toml
já configura corretamente o pytest. Entretanto, caso você tenha problemas com isso e queira explicitamente uma saída completa, o comando é:
python3 -m pytest -s -vv
Caso precise executar apenas um arquivo de testes basta executar o comando:
python3 -m pytest tests/nomedoarquivo.py
Caso precise executar apenas uma função de testes basta executar o comando:
python3 -m pytest -k nome_da_func_de_tests
Se desejar que os testes parem de ser executados quando acontecer o primeiro erro, use o parâmetro -x
python3 -m pytest -x tests/test_jobs.py
Para executar um teste específico de um arquivo, basta executar o comando:
python3 -m pytest tests/nomedoarquivo.py::test_nome_do_teste
Se quiser saber mais sobre a instalação de dependências com pip
, veja esse artigo.
Além dos testes com o Pytest, é possível rodar a aplicação flask para visualizar no navegador o resultado do desenvolvimento das funções.
Para isso, digite o comando flask run
, e acesse o site gerado pelo Flask em http://localhost:5000
.