![](/img/trans.png)
[英]Django testing with assertRaises fails to realise that exception raised is the one expected
[英]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
是一種特定的異常- 作為第二個參數,您應該傳遞一個callable :
assertRaises(exception, callable, *args, **kwds)
換句話說,不要調用u.save()
:
self.assertRaises(Exception, u.save)
另外,您應該真正考慮使用自定義異常或使用內置的Django驗證錯誤,而不是引發和捕獲廣泛的Exception
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.