Использование Django 1.3, Python 2.6
Наличие особенно странной проблемы для отслеживания, связанной с интернационализацией, и RequestFactory против 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',
)