考虑以下代码:
def get_some_text():
return _(u"We need this text here")
编写单元测试的最佳方法是什么,以确保函数返回这个 - 由Babel引用和翻译 - 字符串?
这个天真的代码不会包含引用 - 所以这实际上是一个不同的" Babel字符串":
def test_get_some_text(self):
self.assertEqual(get_some_text(), _(u"We need this text here"))
答案 0 :(得分:0)
如果您正在使用烧瓶,请不要介意使用嘲讽,并且您只测试_
返回的内容(即get_some_text
没有对_
的结果进行任何其他转换,然后您可以模拟_
的返回值并测试您得到的结果:
import mock
@mock.patch('gettext.ugettext')
def test_get_some_text(self, mock_ugettext):
mock_ugettext.return_value = u'Hello World'
self.assertEqual(get_some_text(), u'Hello World')
我们知道_
从here调用ugettext
,如果我们之前删除了import ipdb; ipdb.set_trace()
行,我们可以跳转到python shell,调用{{1 }},并使用this answer查找get_some_text
的导入路径,结果为ugettext
。
如果您只使用了babel,并且知道了翻译目录的路径,那么您可以make your own translations进行测试:
gettext.ugettext