1
当我保存用户模型时,我想检查它是否有用户名。 因此,我写了这个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'试图在'save'调用中捕获它之前在测试中引发异常。 User.objects.create()会将实例保存到数据库中,触发信号并抛出异常,但不会为了测试目的而捕获该异常。如果你想在保存它并抛出(预期的)错误之前实例化对象,使用'u = User()',然后试着用@alecxe说的assertRaises来捕获它。 – ryanmrubin
它没有区别,仍然不起作用。 – Saphire
@Saphire好吧,它是如何失败?谢谢。 – alecxe