Skip to main content
 首页 » 编程设计

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

2025年05月04日39sxdcgaq8080

是否有任何理由测试模型方法,或者我应该假设 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() 

请您参考如下方法:

您可以放心地假设在 models.Model 基类上定义的方法有效。当然,您自己的方法(自定义方法或重写方法)都必须进行测试。

作为旁注:Django 模型的约定是在管理器上定义在表级别工作的方法,而不是在模型本身上工作,所以至少你的 get_by_team_id 和可能的 initialize 应该在自定义管理器上定义。