异常测试失败



当我保存User模型时,我想检查它是否有用户名。因此我写了pre_save:

@receiver(pre_save, sender=User)
def validate_user(sender, instance, **kwargs):
    if len(instance.username) <= 5: raise Exception("Username too short")

现在在我的测试方法中,我想测试这个异常:

def test_user_no_username(self):
    u = User.objects.create()
    self.assertRaises(Exception, u.save())

测试失败。为什么?

assertRaises是一种特殊的异常- 作为第二个参数,您应该传递一个可调用的:

assertRaises(exception, callable, *args, **kwds)

也就是说,不要调用u.save():

self.assertRaises(Exception, u.save)

另外,你应该考虑自定义异常或使用内置的Django验证错误,而不是引发和捕获广泛的Exception

最新更新