测试不会改变语言

问题描述 投票:0回答:1

我想用多语言测试我的模型,但是代码忽略了我对语言的更改。

我的models.py

class NameType(models.Model):
    ...
    class Meta:
        if get_language().split('-')[0] == 'it':
            print(get_language())  # called once at begin of test
            ordering = ['name_it']
        elif get_language().split('-')[0] == 'en':
            print(get_language())  # never called
            ordering = ['name_en']

我的test_models.py

class NameTypeTest(TestCase):
    def test_nametype_ordered(self):
        name = NameType.objects.create(name_en='Name', name_it='Nome')
        surname = NameType.objects.create(name_en='Surname', name_it='Cognome')
        activate('it')
        nametype_list = NameType.objects.all()
        self.assertEqual(nametype_list[0], surname)
        self.assertEqual(nametype_list[1], name)
        print(get_language())  # it
        activate('en')
        nametype_list = NameType.objects.all()
        # nametype_list = sorted(NameType.objects.all())  # I tried even this
        print(get_language())  # en
        self.assertEqual(nametype_list[0], name)  # here the test fails
        self.assertEqual(nametype_list[1], surname)
        print(get_language())  # never called, the test fail before

nametype_list[0]surname,即使激活了en,也应该是name,因为name_en=namename_en=surname之前(n get_language()提供正确的语言)。该模型的元仅被调用一次。

谢谢

django translation django-testing django-tests
1个回答
0
投票

代码对我来说似乎是错误的,并且翻译功能开发起来非常复杂,没有任何严重的原因。我想向您推荐此软件包https://pypi.org/project/django-translations/。它具有所需的所有功能,并且做得很好!

© www.soinside.com 2019 - 2024. All rights reserved.