【问题标题】:Testing for a ValidationError in Django在 Django 中测试 ValidationError
【发布时间】:2016-05-20 10:15:38
【问题描述】:

如果我有一个名为 Enquiry 且属性为 email 的模型,我该如何检查使用无效电子邮件创建查询是否会引发错误?

我试过了

def test_email_is_valid(self):
    self.assertRaises(ValidationError, Enquiry.objects.create(email="testtest.com"))

但是我得到了错误

TypeError:“查询”对象不可调用

我不太明白,有人知道测试电子邮件验证的正确方法吗?

【问题讨论】:

    标签: django django-unittest


    【解决方案1】:

    当您调用save()create() 时,Django 不会自动验证对象。您可以通过调用full_clean 方法来触发验证。

    def test_email_is_valid(self):
        enquiry = Enquiry(email="testtest.com")
        self.assertRaises(ValidationError, enquiry.full_clean)
    

    请注意,您不要在上面的代码中调用full_clean()。您可能更喜欢上下文管理器方法:

    def test_email_is_valid(self):
        with self.assertRaises(ValidationError):
            enquiry = Enquiry(email="testtest.com")
            enquiry.full_clean()
    

    【讨论】:

    • ValidationError 可以用from django.core.exceptions import ValidationError导入
    猜你喜欢
    • 2018-11-10
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-23
    • 2017-05-10
    • 2019-11-11
    • 1970-01-01
    相关资源
    最近更新 更多