gpt4 book ai didi

python - Flask OpenID 单元测试

转载 作者:行者123 更新时间:2023-12-02 18:18:02 24 4
gpt4 key购买 nike

我正在尝试为 OpenID 的 Flask 应用程序编写单元测试,但在调用时

oid.try_login(<oid provider>, <params>)

我收到错误:

RuntimeError: <class 'flask.testing.FlaskClient'> does not support redirect to external targets

因此,像每个优秀的 SO 用户一样,我四处寻找一些解决方案:

  1. 使用 NoExtRef Flask 扩展来伪装 oid 提供程序。我不确定这在应用程序级别是否可行,因为我假设 Flask-openid 与 oid url 混在一起(当我尝试时它只是将我重定向到原始页面)。但这看起来很丑陋,因为我只是为了单元测试而更改代码。
  2. 创建我自己的 oid 服务器,但这可能仍然是外部重定向(稍后当我变得足够绝望时我会尝试这个)。

我想另一种选择是忽略编写登录单元测试,而只是使用很棒的 Flask 测试框架在 Flask.g 中设置用户。但我更愿意保留登录单元测试。

最佳答案

还有一种替代方法 - 对 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

关于python - Flask OpenID 单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21655601/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com