Nível: básico
Conteúdo:
- Verbos HTTP para serviços RESTful
- Criação de scripts para recuperar e inserir dados em uma API
- Desenvolver testes e relatórios a partir dos scripts criados
O objetivo deste primeiro artigo é te guiar na na instalação, configuração e criação do primeiro script, que realiza uma requisição a um endpoint real utilizando o verbo GET.
Vamos explorar nos próximos os demais verbos, manipulação dos dados de resposta, testes de APIs e validação.
Do que você irá precisar:
- Python 3+
- Pip (gerenciador de pacotes do Python)
- Acesso à internet
- Algum editor de texto ou IDE (utilizo VSCODE por praticidade e gosto pessoal)
Por que testar APIs?
A demanda por profissionais com experiência em microsserviços vem crescendo de forma assustadora nos últimos anos e isso se deve ao fato de que um microsserviço geralmente é desenvolvido e entregue rapidamente (quando comparado a partes mais complexas de um sistema).
Esse tipo de teste é bastante desafiador porque grande parte do valor de uma aplicação encontra-se no seu back-end, onde regras de negócios, arquitetura, carga, performance, segurança, integração e demais características são postas à prova.
Não existe a preocupação com interface de usuário, usabilidade ou beleza do produto porque buscamos avaliar as características citadas através de uma série de inputs e outputs de informações a que esses endpoints são submetidos.
Verbos HTTP
- Get: recupera a representação de um ou mais objetos em JSON ou XML e apresenta um código de resposta 200 quando executado com sucesso.
- Post: cria novos objetos e retorna um código de resposta 201 quando executado com sucesso.
- Put: atualiza um objeto ou cria um novo e retorna os códigos 200 ou 201 respectivamente.
- Delete: remove um objeto e apresenta um código de resposta 200 quando executado com sucesso.
- Patch: atualiza parte das informações de um objeto e pode-se informar apenas a parte interessada do objeto no seu request.
Conseguimos utilizar esses verbos e interagir com as informações através de um request, que deve conter, obrigatoriamente, a url, verbo, cabeçalho e dados quando necessário.
Instalação
- Acesse aqui.
- Faça o download da versão mais recente (ou de alguma versão recente, o importante é que utilizemos Python 3 porque o suporte ao Python 2 foi encerrado no fim de 2019.

- Execute o instalador, marque a opção de adicionar o python às variáveis de ambiente e clique em install now.

- Aguarde o processo de instalação finalizar e clique em close (na próxima tela).


- Verifique se a instalação ocorreu com sucesso abrindo um novo terminal e executando o comando python -V (deve ser exibida uma mensagem com a versão instalada)

Uma vez que a instalação foi concluída com sucesso, precisamos apenas instalar duas bibliotecas que são necessárias para realizar as requisições (requests) e verificar seus resultados (Pytest).
Execute o comando abaixo:
- pip install requests pytest

- Uma mensagem informando ao usuário que as bibliotecas informadas e suas dependências foram instaladas corretamente deve ser exibida:

Mão na massa…
Agora crie uma pasta para colocar seu código. Eu, por exemplo, criei uma pasta chamada Python em Documentos e dentro dela uma outra chamada Testes em APIs:

Escolhi os endpoints do site dummy pela simplicidade e praticidade na hora de implementar nossos scripts. Veja que ele nos oferece rotas com todos os verbos HTTP apresentados inicialmente e nos permite buscar, criar, deletar e atualizar empregados (employees).

Na sua IDE de escolha (lembre-se que ela deve dar suporte ao Python 3), crie um novo arquivo chamado get.py (a extensão .py é muito importante porque ela nos diz que nosso arquivo pode ser executado pelo interpretador do Python).
Segue o passo a passo do desenvolvimento:
- Sabendo que vamos utilizar a biblioteca requests para realizar as chamadas nas APIs, nosso primeiro passo é importá-la no nosso get.py:

- Vamos utilizar a rota http://dummy.restapiexample.com/api/v1/employees
- Guarde-a em uma variável chamada url. Esse endpoint nos retorna a lista com todos os empregados cadastrados nesse sistema:

Nosso código ficará assim com a atribuição da variável url:

Precisamos criar um cabeçalho (header) informando que vamos realizar um request e que aceitamos diversos tipos de resposta do endpoint:

Agora, precisamos realizar essa busca por todos os empregados utilizando a biblioteca requests e sua respectiva rota com a linha de código requests.get(url, headers=headers).
Isso significa que nossa biblioteca vai chamar uma função do verbo get informando a url que guarda nossa rota e o cabeçalho. Podemos guardar essa informação em uma variável para uso posterior (vou chamá-la de resposta):

Finalmente imprimimos nossa variável de resposta e analisamos seu conteúdo:

O código ao fim deve ficar da seguinte forma:

Vamos executar nosso script através de um terminal:
- Abra o terminal novamente e navegue até a pasta criada (no meu caso Documentos -> Python -> Testes em APIs)
- Execute o comando python get.py
- A saída no terminal deve ser parecida com a imagem abaixo

Veja que a resposta conta com um status (sucesso) e lista de usuários (possuindo informações como nome, salário, idade e imagem de perfil) cadastrados naquele instante de tempo da execução do script.
Na continuação dessa série veremos os demais métodos HTTP, manipulação da variável de resposta, Pytest e geração de relatórios.
Enquanto isso, me conta o que achou do tutorial sobre testes de APIs? Deixe suas dúvidas e sugestões nos comentários!