我应该在Django模型中测试方法吗?

时间:2018-10-31 08:57:24

标签: python django unit-testing testing

是否有任何理由测试模型方法,或者我应该假设Django工作正常并且未经测试?

这是我的模型以及其中的几种方法:

class SlackTeam(models.Model):
    ...

    def get_user(self, user_id):
        return self.users.filter(user_id=user_id).first()

    def deactivate(self):
        self.active = False
        self.initiator.access_token = ''
        self.initiator.save()
        self.initiator = None
        self.deactivated_at = timezone.now()
        self.save()

        if hasattr(self, 'slackbot'):
            self.slackbot.delete()

    def set_initiator(self, user):
        self.initiator = user
        self.save(update_fields=['initiator'])

    @classmethod
    def initialize(cls, team_id, name):
        return cls.objects.update_or_create(
            team_id=team_id, defaults={'name': name})[0]

    @classmethod
    def get_by_team_id(cls, team_id):
        return cls.objects.filter(team_id=team_id).first()

1 个答案:

答案 0 :(得分:5)

您可以放心地假设在基models.Model类上定义的方法可以工作。当然,必须测试您的 own 方法(自定义方法或覆盖方法)。

作为旁注:Django模型的约定是在管理器上而不是模型本身上定义在表级别上运行的方法,因此至少应定义您的get_by_team_id和可能的initialize在自定义经理上。