Sử dụng Django 1.3, Python 2.6Ngôn ngữ mặc định thông qua các thiết lập không được tôn trọng trong thử nghiệm
Có một vấn đề đặc biệt kỳ lạ để theo dõi liên quan đến quốc tế hóa, và RequestFactory vs TestClient để thử nghiệm quan điểm.
Nếu tôi chạy:
./manage.py test
Tất cả các bài kiểm tra chạy (kể cả những người có vấn đề) và vượt qua thành công. Nếu tôi chạy:
./manage.py test <appname>
thử nghiệm của ứng dụng sẽ thất bại, ném một mẫu render ngoại lệ cho mẫu mà sử dụng mã ngôn ngữ vì django ngôn ngữ nghĩ yêu cầu được yêu cầu không phải là một ngôn ngữ chúng tôi đã liệt kê trong cài đặt.LANGUAGES. (Trong trường hợp này nó luôn luôn là 'en-us', ngôn ngữ phù hợp với tủ quần áo chúng tôi hỗ trợ là 'en')
Dưới đây là một ví dụ về một bài kiểm tra đó sẽ thất bại:
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
)
Vấn đề này sẽ không xảy ra nếu TestClient của django được sử dụng để thực hiện yêu cầu tới url gọi một chế độ xem cụ thể. Tuy nhiên, nếu cùng chế độ xem được gọi đơn giản với kết quả của RequestFactory hoặc đặt phương thức , nó sẽ ném lỗi ở trên.
Dường như khi sử dụng phương pháp RequestFactory, tệp cài đặt không được tôn trọng. Tôi có thiếu cái gì đơn giản ở đây không?
Thông tin bổ sung
thiết lập miền địa phương áp dụng
LANGUAGE_CODE = 'en'
LANGUAGES = (
('en', 'English'),
('de', 'Deutsch'),
('es', 'Espanol'),
('fr', 'Francaise'),
('it', 'Italiano'),
('pt-br', 'Portugues (Brasil)'),
)
tích cực middleware
MIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.middleware.locale.LocaleMiddleware',
'services.middleware.LegacyIntegrationMiddleware',
)
Xem các chỉnh sửa ở trên, a) không hoạt động như mong đợi trong trường hợp này. b) Không giải quyết vấn đề, nhưng vẫn thực sự tò mò tại sao RequestFactory không tôn trọng các tập tin cài đặt. – kaptainlange
Thử nghiệm a) và hoạt động cho tôi với cùng phiên bản Python và Django. Cẩn thận với việc đặt hàng phần mềm trung gian. – Stan
Cài đặt 'LANGUAGE_CODE' của bạn trông không hợp lệ. https://docs.djangoproject.com/en/1.3/ref/settings/#language-code – Stan