image

Acesse bootcamps ilimitados e +650 cursos

50
%OFF
Article image
Tiago Peniche
Tiago Peniche20/05/2024 21:13
Compartilhe

Teste e Publicação de API's: Um Guia Definitivo para Iniciantes

  • #Testes unitários
  • #API

As APIs (interfaces de programação de aplicativos) são essenciais para conectar sistemas e aplicativos diferentes, permitindo a troca de dados e funcionalidades. Testar e publicar APIs é crucial para garantir sua confiabilidade e desempenho.

Este artigo fornecerá um guia completo para iniciantes com um passo a passo sobre como testar e publicar APIs usando Python e Flask nos exemplos de código.

Testando APIs

Testar APIs envolve verificar se elas estão funcionando conforme o esperado. Existem vários tipos de testes que podem ser realizados:

  • Testes de unidade: Testam funções e métodos individuais da API.
  • Testes de integração: Testam a interação entre diferentes componentes da API.
  • Testes de aceitação: Testam a API do ponto de vista do usuário.

Tipos de Teste

Além dos testes de unidade, integração e aceitação mencionados anteriormente, outro tipo importante de teste é o teste de carga.

Teste de Carga

Os testes de carga testam o desempenho da API sob carga pesada, simulando um grande número de usuários acessando a API simultaneamente. Isso ajuda a identificar gargalos e garantir que a API possa lidar com o tráfego esperado.

Funcionamento dos Testes de Carga

Os testes de carga geralmente envolvem as seguintes etapas:

  1. Definir cenários de carga: Determinar o número de usuários simultâneos, a taxa de solicitações e os padrões de acesso esperados.
  2. Criar scripts de teste: Escrever scripts que simulam o comportamento do usuário e enviam solicitações para a API.
  3. Executar os testes: Executar os scripts de teste e monitorar o desempenho da API.
  4. Analisar os resultados: Analisar os resultados dos testes para identificar quaisquer problemas de desempenho ou gargalos.

Exemplo de Código de Teste de Carga em Python usando Locust:

import locust

class UserBehavior(locust.TaskSet):

  def on_start(self):
      # Faça login na API
      self.client.post("/login", json={"username": "admin", "password": "password"})

  def on_stop(self):
      # Faça logout da API
      self.client.post("/logout")

  def get_users(self):
      # Envie uma solicitação GET para o endpoint /users
      self.client.get("/users")

class WebsiteUser(locust.HttpLocust):
  task_set = UserBehavior
  min_wait = 1000
  max_wait = 2000

Este código cria um script de teste de carga usando a biblioteca Locust. Ele simula o comportamento do usuário fazendo login na API, enviando solicitações para o endpoint /users e fazendo logout da API. Os parâmetros min_wait e max_wait definem o intervalo de tempo entre as solicitações.

Usando o Framework de Testes do Python

O Python fornece um framework de testes robusto chamado unittest. Ele permite criar casos de teste que verificam o comportamento esperado da API. Um caso de teste básico usando unittest se parece com:

import unittest

class APITestCase(unittest.TestCase):

  def test_get_all_users(self):
      # Envie uma solicitação GET para a API
      response = requests.get('http://localhost:5000/users')

      # Verifique o código de status da resposta
      self.assertEqual(response.status_code, 200)

      # Verifique o conteúdo da resposta
      self.assertEqual(response.json(), {'users': [{'id': 1, 'name': 'John Doe'}]})

Este código cria um caso de teste para verificar se o endpoint /users da API está retornando os dados esperados. Ele envia uma solicitação GET para o endpoint e verifica se o código de status da resposta é 200 (OK) e se o conteúdo da resposta é o esperado.

Publicando APIs

Depois de testar a API, ela está pronta para ser publicada. Existem vários métodos para publicar APIs:

  • Hospedagem em nuvem: Hospedar a API em um serviço de nuvem como AWS ou Azure.
  • Servidor dedicado: Implantar a API em um servidor dedicado.
  • Contêineres: Empacotar a API em um contêiner e implantá-lo usando plataformas como Docker ou Kubernetes.

Usando o Flask para Publicar APIs

O Flask é um framework web popular para Python que pode ser usado para publicar APIs. Para publicar uma API usando o Flask, você pode:

  1. Criar um aplicativo Flask.
  2. Definir rotas e métodos de manipulação para os endpoints da API.
  3. Iniciar o aplicativo Flask.

Um exemplo de um aplicativo Flask que publica uma API simples:

from flask import Flask, request, jsonify

app = Flask(__name__)

@app.route('/users', methods=['GET'])
def get_all_users():
  users = [{'id': 1, 'name': 'John Doe'}]
  return jsonify({'users': users})

if __name__ == '__main__':
  app.run()

Este código cria um aplicativo Flask que publica uma API simples com um endpoint /users que retorna uma lista de usuários. Ele define uma rota e um método de manipulação para o endpoint, e inicia o aplicativo Flask.

Testes de Unidade

Funcionamento:

Os testes de unidade testam módulos ou funções individuais da API, isolando-os do restante do código. Eles verificam se cada módulo ou função está funcionando conforme o esperado e retorna os resultados corretos para diferentes entradas.

Exemplo de Código de Teste de Unidade em Python:

import unittest

class UserTest(unittest.TestCase):

  def test_get_user(self):
      # Crie um usuário de teste
      user = User(id=1, name='John Doe')

      # Verifique se o método get_user() retorna o usuário correto
      self.assertEqual(user.get_user(), {'id': 1, 'name': 'John Doe'})

Testes de Integração

Funcionamento:

Os testes de integração testam a interação entre diferentes módulos ou componentes da API. Eles verificam se os módulos estão se comunicando corretamente e trocando dados conforme o esperado.

Exemplo de Código de Teste de Integração em Python:

import unittest

class UserAPITest(unittest.TestCase):

  def test_create_user(self):
      # Crie um cliente de teste para a API
      client = APIClient()

      # Envie uma solicitação POST para o endpoint /users
      response = client.post('/users', json={'name': 'John Doe'})

      # Verifique se o código de status da resposta é 201 (Criado)
      self.assertEqual(response.status_code, 201)

      # Verifique se o usuário foi criado com sucesso
      self.assertEqual(response.json(), {'id': 1, 'name': 'John Doe'})

Testes de Aceitação

Funcionamento:

Os testes de aceitação testam a API do ponto de vista do usuário final. Eles verificam se a API está atendendo aos requisitos do usuário e fornecendo a funcionalidade esperada.

Exemplo de Código de Teste de Aceitação em Python usando Behave:

from behave import *

@given('I am a registered user')
def step_impl(context):
  # Crie um usuário de teste
  user = User(id=1, name='John Doe')

@when('I send a GET request to the /users endpoint')
def step_impl(context):
  # Envie uma solicitação GET para o endpoint /users
  response = requests.get('http://localhost:5000/users')

@then('the response should contain my user data')
def step_impl(context):
  # Verifique se o código de status da resposta é 200 (OK)
  assert response.status_code == 200

  # Verifique se o conteúdo da resposta contém os dados do usuário
  assert response.json() == {'users': [{'id': 1, 'name': 'John Doe'}]}

Conclusão

Testar e publicar APIs são etapas essenciais para garantir sua confiabilidade e desempenho. Usando o framework de testes do Python e o Flask, você pode facilmente testar e publicar suas APIs.

Espero que este artigo te ajude nos seus estudos e a testar sua API's, você pode garantir que suas APIs estejam funcionando conforme o esperado e disponíveis para uso por outros sistemas e aplicativos.

Compartilhe
Comentários (4)
Valdir Alves
Valdir Alves - 10/06/2024 10:37

Vamos nos Aprofundar no Assunto Testes de API - ferramentas essenciais

Regilene Silva
Regilene Silva - 21/05/2024 09:03

Ótimo artigo! Obrigada!

Alexandre Kranz
Alexandre Kranz - 20/05/2024 23:38

Parabéns pelo artigo!

Fernando Conceição
Fernando Conceição - 20/05/2024 22:12

Ótimo artigo! Bem completo e estruturado de forma informativa e didática! Parabéns.