单元测试 Flask Babel 翻译
Unit testing Flask Babel translations
我想做一些单元测试来检查我的 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)
但是,尽管应用程序运行良好,但 work/pass 并没有。我做错了什么?
您显示的代码似乎对我有用。请根据您的描述在此处查看完整示例:https://github.com/loomchild/flask_babel_test。当我 运行 ./flask_babel_test_test.py 两个测试都通过时。
您能否提供完整的源代码以重现该问题?
目前我可以想象以下解决方案(它们都出现在上面链接的示例代码的 commented-out 部分):
涉及一些缓存 - 在测试期间更新默认语言环境后尝试执行 flask.ext.babel.refresh() 并查看是否有帮助。
如果您使用语言环境选择器从 Accept-Language HTTP header 自动检索浏览器语言,例如:
@babel.localeselector
def get_locale():
translations = [str(translation) for translation in babel.list_translations()]
return request.accept_languages.best_match(translations)
然后在测试期间不要修改应用程序配置,而是指定 header:
rv = app.test_client().get('/', headers=[("Accept-Language", "pt_BR")])
Flask-Babel 在测试期间找不到 translations
目录。它在 app["BABEL_TRANSLATION_DIRECTORIES"]
配置设置中查找它们(默认为 translations
)。路径可以是相对于 app.root_path
的绝对路径或相对路径(如果不确定它指向何处,请在测试中打印此变量)。您可以指定多个路径,以 ;
.
分隔
我想做一些单元测试来检查我的 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)
但是,尽管应用程序运行良好,但 work/pass 并没有。我做错了什么?
您显示的代码似乎对我有用。请根据您的描述在此处查看完整示例:https://github.com/loomchild/flask_babel_test。当我 运行 ./flask_babel_test_test.py 两个测试都通过时。
您能否提供完整的源代码以重现该问题?
目前我可以想象以下解决方案(它们都出现在上面链接的示例代码的 commented-out 部分):
涉及一些缓存 - 在测试期间更新默认语言环境后尝试执行 flask.ext.babel.refresh() 并查看是否有帮助。
如果您使用语言环境选择器从 Accept-Language HTTP header 自动检索浏览器语言,例如:
@babel.localeselector def get_locale(): translations = [str(translation) for translation in babel.list_translations()] return request.accept_languages.best_match(translations)
然后在测试期间不要修改应用程序配置,而是指定 header:
rv = app.test_client().get('/', headers=[("Accept-Language", "pt_BR")])
Flask-Babel 在测试期间找不到
分隔translations
目录。它在app["BABEL_TRANSLATION_DIRECTORIES"]
配置设置中查找它们(默认为translations
)。路径可以是相对于app.root_path
的绝对路径或相对路径(如果不确定它指向何处,请在测试中打印此变量)。您可以指定多个路径,以;
.