Язык по умолчанию через настройки, не соблюдаемые во время тестирования
Использование Django 1.3, Python 2.6
Наличие особенно странной проблемы для отслеживания, связанной с интернационализацией, и RequestFactory vs. TestClient для тестирования представлений.
Если я бегу:
./manage.py test
Все тесты запускаются (в том числе проблемные) и проходят успешно. Если я бегу:
./manage.py test <appname>
Тесты приложения не пройдут, что вызовет исключение отрисовки шаблонов для шаблонов, использующих код языка, потому что язык, по мнению django, запрашиваемого запроса, не является языком, который мы перечислили в settings.LANGUAGES. (В этом случае это всегда был «en-us», язык соответствия шкафу, который мы поддерживаем, был «en»)
Вот пример теста, который не пройдёт:
class TemplateServingTestCase(TestCase):
def setUp(self):
self.app_dir = os.path.abspath(os.path.dirname(__file__))
self.gallery_root = os.path.join(self.app_dir, 'test_gallery')
self.gallery_url = '/'
self.request = RequestFactory().get('/')
def test_404_invalid_category(self):
self.assertRaises(Http404, gallery_page,
self.request,
'bad-category',
self.gallery_root,
self.gallery_url
)
Эта проблема не будет возникать, если django TestClient используется для отправки запроса на URL, который вызывает конкретное представление. Однако, если то же самое представление просто вызывается с результатом методов get или put RequestFactory, оно выдаст ошибку выше.
Похоже, что при использовании метода RequestFactory файл настроек не соблюдается. Я что-то упускаю здесь?
Дополнительная информацияПрименимые настройки локали
LANGUAGE_CODE = 'en'
LANGUAGES = (
('en', 'English'),
('de', 'Deutsch'),
('es', 'Espanol'),
('fr', 'Francaise'),
('it', 'Italiano'),
('pt-br', 'Portugues (Brasil)'),
)
Активное промежуточное ПО
MIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.middleware.locale.LocaleMiddleware',
'services.middleware.LegacyIntegrationMiddleware',
)