我最近修改了我的 Django 项目的设置,使其在我运行测试而不是 PostgreSQL 时使用 SQLite3,以便我的测试运行得更快。但是,一旦我这样做了,如果我尝试创建一个用户名超过 30 个字符的用户,我的一个否定单元测试会检查以验证 Django 是否会抛出错误。直到这个时候,测试总是通过。
如果我使用 PostgreSQL 运行以下测试,则会引发异常(特别是 DatabaseError)并且测试通过。但是,如果我改用 SQLite3,则不会引发异常并且测试失败。我仔细检查了 SQLite3 auth_user 模式并确认用户名是 varchar(30) 字段。有没有其他人经历过这个?谢谢。
from django.test import TestCase
from django.contrib.auth.models import User
class SimpleTest(TestCase):
def test_simple(self):
exception_raised = True # Exception should be raised since username > 30 chars
try:
user = User.objects.create_user(username='testusertestusertestusertestuser')
except Exception as e:
exception_raised = False
assert not exception_raised, "Exception wasn't raised"