繁体   English   中英

单元测试 Flask Babel 翻译

[英]Unit testing Flask Babel translations

我想做一些单元测试来检查我的烧瓶应用程序翻译。 我试过这段代码:

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)

但是,尽管应用程序运行良好,但它不起作用/通过。 我究竟做错了什么?

您显示的代码似乎对我有用。 请根据您的描述在此处查看完整示例: https : //github.com/loomchild/flask_babel_test 当我运行 ./flask_babel_test_test.py 时,两个测试都通过了。

您能否提供允许重现问题的完整源代码?

目前我可以想象以下解决方案(它们都出现在上面链接的示例代码的注释部分中):

  1. 涉及一些缓存 - 在测试期间更新默认语言环境后尝试执行 flask.ext.babel.refresh() ,看看是否有帮助。

  2. 如果您使用 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)

    然后,而不是在测试期间修改应用程序配置,指定一个标题:

     rv = app.test_client().get('/', headers=[("Accept-Language", "pt_BR")])
  3. Flask-Babel 在测试期间无法找到翻译目录 - 尝试移动您的测试 Python 脚本或翻译目录,看看是否有帮助。 我不知道如何在 Flask-Babel 中自定义此目录的位置,也许创建符号链接或从项目根目录运行测试会有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM