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)