Skip to content
/ python-olamundo Public template

Esse repositório tem um exemplo de como organizar um projeto Python com testes de unidade

License

Notifications You must be signed in to change notification settings

poo29004/python-olamundo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Estrutura básica para um projeto Python

Esse repositório tem um exemplo de como organizar um projeto Python com testes de unidade. Foi usado o pipenv para criar o ambiente virtual e gerenciar os pacotes.

Ferramentas necessárias

Configurando o pipenv

Fazer uso do pipenv como gerenciador de pacotes. Ele substitui o pip e o virtualenv.

Para garantir que o diretório .venv será criado dentro do diretório do projeto e não em $HOME/.local/..., coloque a seguinte linha no arquivo de configuração da tua shell (.bashrc ou .zshrc no home do seu usuário).

export PIPENV_VENV_IN_PROJECT=1

Carregue novamente a shell (p.ex. fechando o terminal atual e abrindo um novo terminal, ou source ~/.bashrc ou source ~/.zshrc)

Criando a estrutura do projeto

mkdir python-olamundo
cd python-olamundo

# criando ambiente virtual
pipenv --three
# carregando ambiente virtual
pipenv shell

# criando estrutura de diretórios (pacotes Python) e arquivos (módulos Python)
mkdir saudacao
touch saudacao/__init__.py
touch saudacao/ola_mundo.py
mkdir tests
touch tests/__init__.py
touch tests/test_ola_mundo.py

Após isso o diretório do projeto deverá ficar como apresentado abaixo.

python-olamundo
├── Pipfile
├── saudacao
│   ├── __init__.py
│   └── ola_mundo.py
└── tests
    ├── __init__.py
    └── test_ola_mundo.py

Instalando pacotes com o pipenv

Ao instalar um pacote com o pipenv, esse será automaticamente adicionado no arquivo Pipfile o qual manterá todas as dependências de pacotes desse projeto.

# Exemplo para demonstrar como instalar a biblioteca Requests
pipenv install requests

Isso irá criar o arquivo Pipfile.lock e uma explicação sobre o mesmo pode ser encontrada aqui.

Se clonar um repositório que já tenha os arquivos Pipfile e Pipfile.lock, você pode instalar os pacotes ali informados com o comando:

pipenv install

Isso seria equivalente ao comando pip install -r requirements.txt.

Testes de unidade com unittest

No arquivo test_ola_mundo.py tem um simples teste de unidade feito com o framework unittest do Python.

Executar testes no terminal

# caso ainda não tenha carregado o ambiente virtual
pipenv shell

# para executar o teste de unidade
python -m unittest -v tests/test_ola_mundo.py

Executar testes com o VSCode

  • Abrir a paleta de comando e procurar por Python: Discover Tests, informar o diretório, padrão do nome dos arquivos, etc. Depois disso, acima de cada classe vai aparecer Run Test
  • Para executar os testes, abra o painel (view) de testes e escolha quais testes deseja executar

Esse repositório já contém as configurações do vscode para descoberta dos testes de unidade.

Testes com o PyCharm

Convenção para escrita do código

Nesse repositório seguiu-se a proposta PEP 8 - Style Guide for Python Code.

Módulos e pacotes

  • Módulos são arquivos Python (.py) e devem possuir nomes curtos, sempre em caixa baixa e com o estilo snake_case
  • Pacotes são diretórios que contém módulos Python e devem possuir nomes curtos, sempre em caixa baixa e evitar o estilo snake_case
    • A partir do Python 3.3, o arquivo __init__.py dentro do pacote é necessário quando se deseja executar algum comportamento quando o pacote for importado. Caso contrário, esse arquivo não é mais necessário.

Nomes de classes, métodos, funções e variáveis

  • NomeDeClasses devem seguir o formato CamelCase (PascalCase)
  • Métodos, funções e variáveis sempre em caixa baixa e com o estilo snake_case

Licença de software

Sempre que fizer um software é interessante indicar sob qual a licença o mesmo está sendo disponibilizado. Acesse https://choosealicense.com e veja qual licença seria mais adequada para o seu projeto e coloque a mesma no arquivo LICENSE na raiz do projeto.

Referências

About

Esse repositório tem um exemplo de como organizar um projeto Python com testes de unidade

Topics

Resources

License

Stars

Watchers

Forks

Languages