【问题标题】:Django unit testing for Verbose_nameVerbose_name 的 Django 单元测试
【发布时间】:2018-10-02 01:28:34
【问题描述】:

下面是model.py中的一个类

class UnitUsers(models.Model):
    unit = models.ForeignKey(Unit, on_delete=models.CASCADE)
    user = models.ForeignKey(settings.AUTH_USER_MODEL,
                             on_delete=models.CASCADE)
    create = models.BooleanField(default=False)
    mark = models.BooleanField(default=False)
    submit = models.BooleanField(default=True)

    def __str__(self):
        return str(self.unit) + " - " + str(self.user)

    class Meta:
        verbose_name = _('Unit User')
        verbose_name_plural = _('Unit Users')

尝试为verbose_name编写测试用例如下

class UnitUsersTest(TestCase):

    @classmethod
    def setUpTestData(cls):
        unit = Unit.objects.create(name='Python', 
                                   start='2018-10-25 14:30:59', 
                                   end='2017-10-25 14:30:59',
                                   description='111', deleted='False')
        user = get_user_model().objects.create_superuser(username='admin', 
                                                  email='admin@decent.mark',
                                                  password='password')
        UnitUsers.objects.create(unit=unit, user=user, create='False', 
                                 mark='False', submit='True')


    def test_verbose_name(self):
        unit_user = UnitUsers.objects.get(id=1)
        field_label = unit_user._meta.get_field('user').verbose_name
        self.assertEquals(field_label, 'Unit User')

得到错误

失败:test_verbose_name (decentmark.tests.test_model.UnitUsersTest)

Traceback(最近一次调用最后一次): 文件“C:\Users\Prabhanjan\Documents\GitHub\decentmark\decentmark\tests\test_model.py”,第 54 行,在 test_verbose_name self.assertEquals(field_label, '单位用户') AssertionError:“用户”!=“单位用户” - 用户 + 单位用户


在 0.505 秒内运行 11 次测试

失败(失败=1)

【问题讨论】:

  • 您好,欢迎来到 StackOverflow!为了获得更好的答案,并且您的答案以后不会被删除,您必须阅读并遵循一些基本规则和约定,以帮助每个人更好地沟通和提供帮助。请前往stackoverflow.com/help 阅读主题“我可以在这里问什么主题?”和“我应该避免问什么类型的问题?”。
  • 不要为 django 内部编写测试,django 已经过很好的测试,你应该相信开发 django 源代码的开发人员。为自己的逻辑编写测试,而不是为 django 编写测试

标签: django unit-testing django-models


【解决方案1】:

尝试将 Meta Class 更改为

class Meta:
    verbose_name = "Unit User"
    verbose_name_plural = "Unit Users"

那么你的测试应该是什么样子的

def test_verbose_name_plural(self):
    #unituser is the Class UnitUsers(model.Models)
    unitusers = UnitUsers.objects.get(id=1)
    verbose_name_plural = unitusers._meta.verbose_name_plural
    self.assertEquals(verbose_name_plural, "Unit Users"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-19
    • 1970-01-01
    • 1970-01-01
    • 2019-04-27
    • 2011-12-04
    • 1970-01-01
    • 1970-01-01
    • 2021-04-08
    相关资源
    最近更新 更多