フラスコバベルを使用していて、モックを使用してもかまわず、何_
が返されるかのみをテストする (つまり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からの_
呼び出しはわかっています。直前に行をドロップすると、Python シェルにジャンプして を呼び出し、この回答を使用して のインポート パスを見つけることができます。ugettext
import ipdb; ipdb.set_trace()
get_some_text
ugettext
gettext.ugettext
babel のみを使用していて、翻訳ディレクトリへのパスがわかっている場合は、テスト用に独自の翻訳を作成できる場合があります。
import os
import shutil
import polib
os_locale = ''
translations_directory = '/absolute/path/to/your/translations'
# choose a locale that isn't already in translations_directory
test_locale = 'en_GB'
def setUp(self):
mo_file_path = os.path.join(
translations_directory,
test_locale,
'LC_MESSAGES',
'messages.mo'
)
mo = polib.MOFile()
entry = polib.MOEntry(
msgid=u'We need this text here',
msgstr='My favourite colour is grey'
)
mo.append(entry)
mo.save(mo_file_path)
# modify our locale for the duration of this test
os_locale = os.environ.pop('LANG', 'en')
os.environ['LANG'] = test_locale
def tearDown(self):
# restore our locale
os.environ['LANG'] = os_locale
shutil.rmtree(os.path.join(translations_directory, test_locale))
def test_get_some_text(self):
self.assertEqual(get_some_text(), u'My favourite colour is grey')