CRUD in FastAPI: Revisiting API Routes Testing with 6 New Tests

Posted by

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!