/pytest-serverest-study

Estudo de automação de testes de REST API utilizando Pytest e servidor ServeRest

Primary LanguagePython

pytest Badge ServeRest

Pytest API Study

Repositório utilizado como estudo de automação de testes de REST API utilizando Pytest

Servidor REST API

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

Instalação e execução

Pré requisitos

  • Git
  • Python 3.8+
    • Como alternativa, pode ser utilizado o gerenciador de versão Python Pyenv para a instalação do Python
  • Poetry

Clonando reposiótorio

git clone https://github.com/ltsuda/pytest-serverest-study.git

Instalando dependências Python

> 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: image

Estrutura de diretórios

.
├── __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
  • 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