我正在尝试为OpenID的烧瓶应用程序编写单元测试但是在调用
时 oid.try_login(<oid provider>, <params>)
我收到错误:
RuntimeError:
<class 'flask.testing.FlaskClient'>
不支持重定向到外部目标
所以,就像每个优秀的SO用户一样,我四处寻找解决方案:
我想另一种选择是忽略编写单元测试以进行登录,并使用非常棒的Flask测试框架在Flask.g中设置用户。但我更愿意保留登录单元测试。
答案 0 :(得分:1)
还有一种替代方案 - 使用open-id扩展程序try_login
方法修补猴子:
class LoginTestMonkeyPatch(object):
def __init__(self, oid=None, default_response=None):
self.response = default_response
if oid is not None:
self.init(oid)
def init(self, oid):
oid.try_login = self.try_login
def try_login(self, *args, **kwargs):
# Do whatever you want to do here
答案 1 :(得分:0)
如果要修补登录,则可能无法对其进行测试。
我遇到了同样的问题。对我来说,最好的解决方案是禁用&#34;登录所需的&#34;观点的一部分。
我不知道您是否使用Flask登录,但如果您是,则可以绕过@login_required,这样您甚至不必担心尝试使用以下内容登录用户: / p>
def setUp
env = Environments(app)
env.from_object('config.Testing')
lm = LoginManager()
lm.init_app(app)
self.app = app.test_client()
只是一个想法,我希望这可以帮助你或其他人:)
P.S。这是我在Stack Overflow上的第一篇文章。感谢所有帮助过我的海报!