Flask Test Client API

FlaskClient es un navegador simulado que puede enviar solicitudes y verificar respuestas sin iniciar un servidor.

Medianteapp.test_client()crear una instancia.


Crear cliente de prueba

Método Descripción
app.test_client(use_cookies=True) Método de creación estándar. use_cookies=False deshabilita el manejo de cookies.
with app.test_client() as client: Administrador de contexto. Limpia automáticamente el contexto de solicitud al salir.

Métodos de solicitud

Todos los métodos devuelvenTestResponseobjeto (heredado de Response).

Método Descripción
get(path, **kwargs) Enviar solicitud GET
post(path, **kwargs) Enviar solicitud POST
put(path, **kwargs) Enviar solicitud PUT
delete(path, **kwargs) Enviar solicitud DELETE
patch(path, **kwargs) Enviar solicitud PATCH
open(path, method, **kwargs) Método de solicitud genérico, requiere especificar explícitamente el método

Parámetros de solicitud (kwargs)

Parámetro Descripción
data Cuerpo de la solicitud (cadena o bytes). Se usa para el envío de formularios.
json Datos JSON, se serializan automáticamente y se establece Content-Type: application/json
query_string Cadena o diccionario de parámetros de consulta de URL
headers Diccionario de encabezados de solicitud
content_type Content-Type personalizado
follow_redirects bool, si se siguen automáticamente las redirecciones. Por defecto es False
buffered bool, si se almacena en búfer la respuesta. Por defecto es False

Objeto de respuesta (TestResponse)

Atributo/Método Descripción
status_code Código de estado HTTP (int)
status Texto de estado HTTP, por ejemplo "200 OK"
data Cuerpo de la respuesta (bytes)
text Obtener el cuerpo de la respuesta como texto (str)
get_json() Analizar el cuerpo de la respuesta como JSON. Devuelve dict o list
headers Encabezados de respuesta (objeto Headers)
location URL de destino de la redirección (solo respuestas 3xx)
json_module Módulo usado para la serialización JSON (por defecto app.json)

Pruebas de sesión

Método Descripción
session_transaction(**kwargs) Administrador de contexto para leer y escribir session directamente. Devuelve un objeto SessionMixin

Ejemplo de código

Ejemplo

from app import create_app

app = create_app()
app.config["TESTING"] = True

def test_api():
    with app.test_client() as client:
        # Solicitud GET
        resp = client.get("/api/posts")
        assert resp.status_code == 200
        data = resp.get_json()
        assert isinstance(data, list)

        # Solicitud POST JSON
        resp = client.post("/api/posts", json={
            "title": Tutorial de EJEMPLO,
            "body": Contenido de introducción
        })
        assert resp.status_code == 201
        assert resp.get_json()["title"] == Tutorial de EJEMPLO

        # Solicitud con parámetros de consulta
        resp = client.get("/search?q=flask")
        assert b"flask" in resp.data

        # Simular estado de sesión iniciada
        with client.session_transaction() as sess:
            sess["username"] = "ejemplo"
        resp = client.get("/dashboard")
        assert b"ejemplo" in resp.data

        # Seguir redirección
        resp = client.post("/login", data={
            "username": "admin"
        }, follow_redirects=True)
        assert resp.status_code == 200
Otras extensiones