以编程方式在测试期间登录Flask

时间:2016-02-24 15:33:44

标签: python flask flask-login

我如何以编程方式(不会像我当前那样在登录页面上发布凭据)在使用Flask-login的测试期间登录用户?

我尝试了here描述的解决方案(这似乎是以编程方式登录的唯一解决方案),但在我的情况下它不起作用,因为unauthorized_handler[24.02.16 15:28:07] [131.231.236.97] Invalid FFMPEG Path `/var/www/html/phpffmpeg/ffmpeg\bin\ffmpeg.exe`! [24.02.16 15:28:09] [131.231.236.97] ffmpeg-progress: FFMPEG progress log does not exist! FILE: `/var/www/html/phpffmpeg/logs/47fc097c.ffmpeg.log` ,我得到302响应如果用户未登录则触发(如果用户未经过身份验证,我的处理程序将重定向到登录页面)。

1 个答案:

答案 0 :(得分:1)

我解决了!我认为IMO是最优雅,最简单的解决方案:

# we need this:
from flask_login import encode_cookie

# ...then in the test:    
with self.client.session_transaction():
    self.client.set_cookie(
        self.app.config['SERVER_NAME'], 
        'remember_token', 
        encode_cookie(user_id)
    )
    # assertions here... User is now logged in! \0/

实际代码只有2行(这里我的格式只是为了可读性:P)