我开始为我的应用创建测试。我找到了一些测试几件事的方法,但也想测试电子邮件字段验证器。谁知道哪里出问题了,什么时候会派上用场。但基本上我只是想知道如何做到这一点。
到目前为止,我尝试了几种错误代码(完整性,值,验证),但所有这些均导致错误。在关键词上搜索项目相当困难,但是我确实找到了一些角度。他们都不起作用,而且,我也可以寻找错误的线索。
这就是我所拥有的:
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')