Neste tutorial, vamos aprender a recriar os testes das rotas da API CRUD em FastAPI. CRUD significa Create, Read, Update e Delete, e é uma abordagem comum para lidar com operações básicas de banco de dados.
Antes de começarmos, é importante ter conhecimento básico de FastAPI e saber como criar rotas CRUD. Se você não tem esse conhecimento, recomendo que dê uma olhada em alguns tutoriais de introdução ao FastAPI primeiro.
Passo 1: Criando o ambiente de teste
Para começar, vamos criar um ambiente de teste para executar nossos testes. Vamos criar um arquivo de teste chamado test_routes.py e importar as bibliotecas necessárias:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>CRUD em FastAPI: Recreating API routes tests</title>
</head>
<body>
<h1>CRUD em FastAPI: Recreating API routes tests</h1>
<p>Passo 1: Criando o ambiente de teste</p>
<p>Para começar, vamos criar um ambiente de teste para executar nossos testes. Vamos criar um arquivo de teste chamado test_routes.py e importar as bibliotecas necessárias:</p>
<code>
import pytest
from fastapi.testclient import TestClient
from main import app
</code>
</body>
</html>
Passo 2: Criando os testes para a rota de criação (Create)
Em seguida, vamos criar os testes para a rota de criação, que é responsável por adicionar um novo item ao banco de dados. Vamos adicionar o seguinte código ao nosso arquivo de teste:
<p>Passo 2: Criando os testes para a rota de criação (Create)</p>
<p>Em seguida, vamos criar os testes para a rota de criação, que é responsável por adicionar um novo item ao banco de dados. Vamos adicionar o seguinte código ao nosso arquivo de teste:</p>
<code>
def test_create_item():
client = TestClient(app)
# Dados de exemplo para o novo item
data = {
"name": "Item de teste",
"description": "Descrição do item de teste"
}
# Fazendo o request POST para a rota de criação
response = client.post("/items/", json=data)
# Verificando se o status code do response é 201 Created
assert response.status_code == 201
# Verificando se o item foi criado corretamente
assert response.json()["name"] == data["name"]
assert response.json()["description"] == data["description"]
</code>
Passo 3: Criando os testes para a rota de leitura (Read)
Agora, vamos criar os testes para a rota de leitura, que é responsável por recuperar um item do banco de dados com base em um identificador (ID). Adicione o seguinte código ao seu arquivo de teste:
<p>Passo 3: Criando os testes para a rota de leitura (Read)</p>
<p>Agora, vamos criar os testes para a rota de leitura, que é responsável por recuperar um item do banco de dados com base em um identificador (ID). Adicione o seguinte código ao seu arquivo de teste:</p>
<code>
def test_read_item():
client = TestClient(app)
# Fazendo o request GET para a rota de leitura com um ID válido
response = client.get("/items/1")
# Verificando se o status code do response é 200 OK
assert response.status_code == 200
# Verificando se o item foi retornado corretamente
assert response.json()["id"] == 1
</code>
Passo 4: Criando os testes para a rota de atualização (Update)
Em seguida, vamos criar os testes para a rota de atualização, que é responsável por atualizar um item do banco de dados com base em um identificador (ID). Adicione o seguinte código ao seu arquivo de teste:
<p>Passo 4: Criando os testes para a rota de atualização (Update)</p>
<p>Em seguida, vamos criar os testes para a rota de atualização, que é responsável por atualizar um item do banco de dados com base em um identificador (ID). Adicione o seguinte código ao seu arquivo de teste:</p>
<code>
def test_update_item():
client = TestClient(app)
# Dados de exemplo para a atualização do item
data = {
"name": "Novo nome do item",
"description": "Nova descrição do item"
}
# Fazendo o request PUT para a rota de atualização com um ID válido
response = client.put("/items/1", json=data)
# Verificando se o status code do response é 200 OK
assert response.status_code == 200
# Verificando se o item foi atualizado corretamente
assert response.json()["name"] == data["name"]
assert response.json()["description"] == data["description"]
</code>
Passo 5: Criando os testes para a rota de exclusão (Delete)
Por último, vamos criar os testes para a rota de exclusão, que é responsável por excluir um item do banco de dados com base em um identificador (ID). Adicione o seguinte código ao seu arquivo de teste:
<p>Passo 5: Criando os testes para a rota de exclusão (Delete)</p>
<p>Por último, vamos criar os testes para a rota de exclusão, que é responsável por excluir um item do banco de dados com base em um identificador (ID). Adicione o seguinte código ao seu arquivo de teste:</p>
<code>
def test_delete_item():
client = TestClient(app)
# Fazendo o request DELETE para a rota de exclusão com um ID válido
response = client.delete("/items/1")
# Verificando se o status code do response é 200 OK
assert response.status_code == 200
</code>
Por fim, para executar os testes, basta rodar o seguinte comando no terminal:
<p>Por fim, para executar os testes, basta rodar o seguinte comando no terminal:</p>
<code>
pytest test_routes.py
</code>
Este tutorial abordou como recriar os testes das rotas da API CRUD em FastAPI. Espero que tenha sido útil e que você consiga implementar e rodar seus testes com sucesso!