【问题标题】:Django Unit test for models模型的 Django 单元测试
【发布时间】:2018-09-30 05:02:27
【问题描述】:

下面是models.py中的一个类。

class Unit(models.Model):
    name = models.CharField(max_length=200)
    start = models.DateTimeField()
    end = models.DateTimeField()
    description = models.TextField()
    deleted = models.BooleanField(default=False)

    def clean(self):
        if self.end and self.start and self.end <= self.start:
            raise ValidationError({
                'end': _('End date should be after start date')
            })

    def __str__(self):
        return self.name

    def get_absolute_url(self):
        return reverse('decentmark:unit_view', kwargs={'unit_id': self.pk})

我已经编写了验证日期、字符串长度等的测试。以下是上述类的测试。

from django.test import TestCase
from decentmark.models import *



class UnitModelTest(TestCase):

    @classmethod
    def setUpTestData(cls):
        Unit.objects.create(name='Python', start='2018-10-25 14:30:59', 
                            end='2017-10-25 14:30:59', description='111',
                            deleted='False')

    def test_name_label(self):
        unit = Unit.objects.get(id=1)  # type: Unit
        field_label = unit._meta.get_field('name').verbose_name
        self.assertEquals(field_label, 'name')

    def test_name_max_length(self):
        unit = Unit.objects.get(id=1)
        max_length = unit._meta.get_field('name').max_length
        self.assertEquals(max_length, 200)

    def test_str(self):
        unit = Unit.objects.get(id=1)
        expected_object_name = unit.name
        self.assertEquals(expected_object_name, str(unit))

    def test_date(self):
        unit = Unit.objects.get(id=1)
        with self.assertRaises(ValidationError):
            unit.full_clean()

我是否需要在 models.py 中为上述类编写任何其他测试。

【问题讨论】:

    标签: django unit-testing django-models


    【解决方案1】:

    您可以使用Coverage.py 来检查代码的哪些部分被执行,从而测试这些部分。

    Django Documentation about Coverage.py

    【讨论】:

      猜你喜欢
      • 2017-12-19
      • 1970-01-01
      • 2018-08-05
      • 2018-10-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-21
      • 2015-06-24
      相关资源
      最近更新 更多