Saltar al contenido

Acceder al objeto de sesión durante la prueba unitaria de la aplicación Flask

Solución:

Esto es lo que busca. Sin embargo, como dice, tendrías que usar la instanciación que creas en tu with declaración.

with app.test_client() as c:
    with c.session_transaction() as sess:
        sess['a_key'] = 'a value'

    # once this is reached the session was stored
    result = app.test_client.get('/a_url')
    # NOT part of the 2nd context

Tenga en cuenta que esto no funcionará si ejecuta su prueba dentro del alcance de la with c.session_transaction() as sess declaración, debe ejecutarse después ese bloque.

Si desea leer los datos de la sesión escritos en su vista desde la prueba, una forma es simular la vista de la sesión como un dictado y verificar la sesión en su prueba. Aquí hay un ejemplo usando unittest.mock de Python:

app.py

from flask import Flask, session, request

app = Flask(__name__)

app.config["SECRET_KEY"] = "my secret key"

@app.route("https://foroayuda.es/", methods=["POST"])
def index():
    session["username"] = request.form["username"]
    return "Username saved in session"

test_index.py

from unittest.mock import patch
from app import app


def test_index():
    with patch("app.session", dict()) as session:
        client = app.test_client()
        response = client.post("https://foroayuda.es/", data={
            "username": "test"
        })
        assert session.get("username") == "test"
        assert response.data == b"Username saved in session"

Puede usar cualquier solución de burla que prefiera, por supuesto.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *