Flask 烧瓶开放式单位检验
我正在尝试为我的flask应用程序编写一个针对OpenID的单元测试,但是在调用Flask 烧瓶开放式单位检验,flask,openid,flask-extensions,Flask,Openid,Flask Extensions,我正在尝试为我的flask应用程序编写一个针对OpenID的单元测试,但是在调用 oid。尝试登录(,) 我得到一个错误: 运行时错误:不支持重定向到外部目标 所以,像所有优秀的So用户一样,我四处寻找一些解决方案: 使用NoExtRef flask扩展伪装oid提供程序。我不确定这在应用程序级别是否可行,因为我假设flask openid会与oid url发生冲突(当我尝试它时,它只是将我重定向到原始页面)。但这看起来很难看,因为我正在严格地为单元测试修改代码 创建我自己的oid服务器,但这可
oid。尝试登录(,)
我得到一个错误:
运行时错误:
不支持重定向到外部目标
所以,像所有优秀的So用户一样,我四处寻找一些解决方案:
我想另一种选择是忽略为登录编写单元测试,而只是使用AwesomeFlask测试框架在Flask.g中设置用户。但是我更愿意保留登录单元测试。还有一种替代方法-monkey补丁OpenID扩展的
try\u 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
如果您正在修补登录名,则可能没有对其进行测试 我也有同样的问题。对我来说,最好的解决方案是禁用视图的“需要登录”部分 我不知道您是否使用Flask Login,但如果您使用Flask Login,您可以绕过所需的@Login\u,这样您甚至不必担心尝试使用以下内容登录用户:
def setUp
env = Environments(app)
env.from_object('config.Testing')
lm = LoginManager()
lm.init_app(app)
self.app = app.test_client()
只是想一想,我希望这对你或其他人有所帮助:)
另外,这是我关于堆栈溢出的第一篇文章。感谢所有帮助我这么多的海报 反应有点晚,但这种方法效果很好。谢谢你给我介绍猴子修补术!