Repositório utilizado como estudo de automação de testes de REST API utilizando Pytest
Como neste projeto foi utilizado como estudo o servidor ServeRest, o mesmo é necessário para que os testes automatizados sejam executados.
Para as instruções de como iniciar o servidor REST, siga a documentação do projeto ServeRest
- Git
- Python 3.8+
- Como alternativa, pode ser utilizado o gerenciador de versão Python Pyenv para a instalação do Python
- Poetry
git clone https://github.com/ltsuda/pytest-serverest-study.git
> cd pytest-serverest-study
> poetry install # aguarde enquanto são instaladas as dependências
> poetry shell # ativando ambiente virtual
pytest-serverest-study > poetry run pytest --variables config/config.json
Se tudo der certo, o resultado será apresentado conforme imagem abaixo:
.
├── __init__.py
├── config
│ └── config.json
├── fixtures
│ ├── __init__.py
│ └── rotas*/
│ ├── __init__.py
│ └── *.py
├── model
│ ├── __init__.py
│ └── modelos*/
│ ├── __init__.py
│ └── *.py
├── poetry.lock
├── pyproject.toml
├── pytest.ini
├── tests
│ ├── __init__.py
│ ├── rota*/
│ │ ├── __init__.py
│ │ ├── test_delete_rota*.py
│ │ ├── test_get_rota*.py
│ │ ├── test_post_rota*.py
│ │ └── test_put_rota*.py
│ └── conftest.py
└── utils
├── __init__.py
└── localizador_url
├── __init__.py
└── localizador_url.py
- config/: diretório com variáveis de ambiente. Exemplo: ip do servidor, email e senha do usuário padrão já existente no ServeRest
- fixtures/*: diretórios com métodos compartilhados (Fixtures) que podem ser facilmente acessados pelos testes, evitando duplicação de código
- carrinhos/carrinhos.py: diretório e arquivo com fixtures relacionados ao endpoint de carrinhos
- model/*: diretório com as classes modelo representando cada tipo objeto a ser enviado para o servidor
- usuario/usuario.py: diretório e arquivo do modelo de usuário com nome, email, senha e propriedade administrador para indicar se o mesmo tem privilégios de administração
- utils/: diretório com módulo auxiliar com metódos de contrução dos endpoints a serem testados
- tests/*: diretório com os testes das rotas e arquivo de configuração pytest para descoberta de fixtures
- produtos/: diretório com testes da rota de produtos
- test_delete_produtos.py Arquivo de teste do método DELETE
- test_get_produtos.py Arquivo de teste do método GET
- test_post_produtos.py Arquivo de teste do método POST
- test_put_produtos.py Arquivo de teste do método PUT
- conftest.py Arquivo para importação e descoberta das fixtures
- produtos/: diretório com testes da rota de produtos
- poetry.lock [doc]: Arquivo com as informações das dependências do projeto
- pyproject.toml [doc]: Arquivo com os requisitos, requisitos de desenvolvimento e metadata do projeto
- pytest.ini [doc]: Arquivo de configuração do pytest, utilizado para criação de marcadores que podem ser utilizados ou não pelos testes, assim podendo indicar se o teste deve ter alguma configuração específica