如何在Django中测试emailfield验证器?

时间:2019-06-01 11:01:24

标签: django validation email testing

我开始为我的应用创建测试。我找到了一些测试几件事的方法,但也想测试电子邮件字段验证器。谁知道哪里出问题了,什么时候会派上用场。但基本上我只是想知道如何做到这一点。

到目前为止,我尝试了几种错误代码(完整性,值,验证),但所有这些均导致错误。在关键词上搜索项目相当困难,但是我确实找到了一些角度。他们都不起作用,而且,我也可以寻找错误的线索。

这就是我所拥有的:

def test_not_an_email(self):
        self.assertRaises(
            ValueError, 
            MyUser.objects.create_user, email='jan@pietnl', password='abcd1234'
            )

但是我得到的错误消息是:

django.db.utils.IntegrityError: UNIQUE constraint failed: accounts_myuser.email

======================================================================
FAIL: test_not_an_email (accounts.tests.UserRegistrationTests)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "C:\xxxxxxxxxxxxxxx\tests.py", line 26, in test_not_an_email
    MyUser.objects.create_user, email='jan@pietnl', password='abcd1234'
AssertionError: ValueError not raised by create_user

----------------------------------------------------------------------
Ran 2 tests in 2.603s

FAILED (failures=1, errors=1)
Destroying test database for alias 'default'...

我认为测试应该是正确的。我究竟做错了什么?任何使我学会更好地理解这一点的东西都会受到赞赏。

编辑:这是带有以下内容的输出:

...
assertRaises(
ValidationError, ...
FAIL: test_not_an_email (accounts.tests.UserRegistrationTests)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "C:\Dev\4\trial\accounts\tests.py", line 26, in test_not_an_email
    MyUser.objects.create_user, email='jan@pietnl', password='abcd1234'
AssertionError: ValidationError not raised by create_user

create_user函数为:

def create_user(self, email, password):
        if not email:
            raise ValueError('Users must have a valid email address')

0 个答案:

没有答案