rit*_*h87 6 python unit-testing flask flask-login
我正在尝试为使用 OpenID 进行身份验证的 Flask 应用程序编写一些单元测试。由于似乎无法通过 OpenID 登录测试客户端(我问了这个问题,但没有收到任何回复:Flask OpenID unittest),我想在我的测试中覆盖 g.user,所以我尝试了来自http://flask.pocoo.org/docs/testing/#faking-resources-and-context 的代码片段,它按预期工作。
不幸的是,当使用烧瓶登录时,g.user 在设置的 before_request 包装器中被覆盖
g.user = current_user
Run Code Online (Sandbox Code Playgroud)
current_user 是匿名的,所以我的测试用例坏了。一种解决方法是仅在测试模式下执行 before_request 包装器代码,但您需要在生产代码中添加特定于测试的逻辑似乎很蹩脚。我也尝试过处理请求上下文,但 g.user 最终仍然被覆盖。任何解决这个问题的干净方法的想法?
小智 -1
基于Flask 单元测试中的另一个问题,我如何模拟请求全局“g”对象上的对象?对我有用的是以下内容:
在我的应用程序中,我将 before_request 中包含的登录逻辑重构为单独的函数。然后,我在测试中修补了该函数,以便它返回我想要用于一系列测试的特定用户。before_request 仍然与测试一起运行,但通过修补它调用的函数,我现在可以避免实际的登录过程。
我不确定这是最干净的方法,但我认为这比在 before_request 中添加仅测试逻辑更好;这只是一个重构。
| 归档时间: |
|
| 查看次数: |
2603 次 |
| 最近记录: |