Testes de APIs REST com Python e Pytest, Parte 1

No items found.
3/3/2020
Marlon de Alencar
Marlon de Alencar
Analista de Testes

Cearense mestrando em ciências de computação e jogador de Dota nas horas vagas

Está sem tempo para ler? Aperte o play para escutar o artigo.

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, teste e validação das APIs.

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

  • 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.
python
  • Execute o instalador, marque a opção de adicionar o python às variáveis de ambiente e clique em install now.
instalando python


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


  • 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)
pytest

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:
get.py

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? Deixe suas dúvidas e sugestões nos comentários! 

O que você achou deste conteúdo?
Quer receber nossos conteúdos?
Seu cadastro foi efetuado com sucesso! Enviaremos as novidades no seu email.
Oops! Something went wrong while submitting the form.