Pular para conteúdo

Exercícios da aula 02

Exercício 01

Crie um endpoint que retorne "olá mundo" usando HTML e escreva seu teste.

Dica: para capturar a resposta do HTML do cliente de testes, você pode usar response.text

Solução

Para criação do endpoint retornando HTML devemos alterar a classe de resposta padrão do FastAPI para HTMLResponse:

Implementação do endpoint
from fastapi import FastAPI
from fastapi.responses import HTMLResponse

app = FastAPI()


@app.get('/', response_class=HTMLResponse)
def read_root():
    return """
    <html>
      <head>
        <title> Nosso olá mundo!</title>
      </head>
      <body>
        <h1> Olá Mundo </h1>
      </body>
    </html>"""

O teste que faz a validação do valor retornado pelo endpoint não precisa ser muito robusto. A ideia principal do exercício é somente validar se estamos retornando o "Olá Mundo" em formato de HTML:

Implementação do teste
from http import HTTPStatus

from fastapi.testclient import TestClient

from fast_zero.app import app


def test_root_deve_retornar_ola_mundo_em_html():
    client = TestClient(app)

    response = client.get('/')

    assert response.status_code == HTTPStatus.OK
    assert '<h1> Olá Mundo </h1>' in response.text

O response.text é um método do cliente de testes do FastAPI que converte os bytes de resposta em string.