异常测试失败
Testing for exception fails
当我保存用户模型时,我想检查它是否有用户名。
因此我写了这个 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
。
当我保存用户模型时,我想检查它是否有用户名。
因此我写了这个 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
。