我知道可以使用session_transaction()方法创建会话对象。但是,有没有办法访问当前会话对象,例如" /"路线受到打击?我做from flask import session
来访问会话但它是空的。如果有可能请告诉我。感谢。
答案 0 :(得分:4)
This正是您要找的。但是,正如它所说,您必须使用您在with
语句中创建的实例化。
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
请注意,如果您在with c.session_transaction() as sess
语句的范围内运行测试,则无法执行此操作,需要在该块之后运行。
答案 1 :(得分:0)
如果要从测试中读取视图中写入的会话数据,一种方法是将会话视图模拟为dict并验证测试中的会话。以下是使用Python's unittest.mock的示例:
<强> app.py 强>
app.factory("datafactory",function("dataFactory"){
var mouse={}
mouse.dosum=function(){
return "my world";
}
});
app.controller(" mycontroller",function(){
$scope.clickme=function(){
$scope.message=datafactory.dosum()
}});
app.controller(" mycontroller",function(){
$scope.message=datafactory.dosum()
});
<强> test_index.py 强>
from flask import Flask, session, request
app = Flask(__name__)
app.config["SECRET_KEY"] = "my secret key"
@app.route("/", methods=["POST"])
def index():
session["username"] = request.form["username"]
return "Username saved in session"
当然,您可以使用您喜欢的任何模拟解决方案。