and*_*ref 4 python unit-testing babel flask
我想做一些单元测试来检查我的烧瓶应用程序翻译。我已经尝试过这段代码:
def test_pt_br(self):
with app.test_request_context():
app.config['BABEL_DEFAULT_LOCALE'] = 'pt_BR'
rv = app.test_client().get('/')
assert 'Execute, melhore' in str(rv.data)
Run Code Online (Sandbox Code Playgroud)
但是,尽管该应用程序运行良好,但它无法正常工作/通过。我究竟做错了什么?
您显示的代码似乎对我有用。请根据您的描述在这里查看完整的示例:https : //github.com/loomchild/flask_babel_test。当我运行./flask_babel_test_test.py时,两个测试都通过了。
您能否提供允许重现该问题的完整源代码?
目前,我可以想象以下解决方案(以上示例代码中的注释部分中都包含了这两种解决方案):
涉及一些缓存-在测试过程中更新默认语言环境后,尝试执行flask.ext.babel.refresh(),看看是否有帮助。
如果您使用localeselector从Accept-Language HTTP标头自动检索浏览器语言,例如:
@babel.localeselector
def get_locale():
translations = [str(translation) for translation in babel.list_translations()]
return request.accept_languages.best_match(translations)
Run Code Online (Sandbox Code Playgroud)
然后,不要在测试期间修改应用程序配置,而是指定标头:
rv = app.test_client().get('/', headers=[("Accept-Language", "pt_BR")])
Run Code Online (Sandbox Code Playgroud)Flask-Babel在测试期间无法找到翻译目录-尝试移动测试Python脚本或翻译目录,看看是否有帮助。我不知道如何在Flask-Babel中自定义此目录的位置,也许创建符号链接或从项目根目录运行测试可能会有所帮助。
| 归档时间: |
|
| 查看次数: |
471 次 |
| 最近记录: |