最近、Djangoプロジェクトの設定を変更して、PostgreSQLの代わりにテストを実行するときにSQLite3を使用するようにしました。これにより、テストがより高速に実行されます。ただし、それを実行すると、ユーザー名が30文字を超えるユーザーを作成しようとすると、Djangoがエラーをスローすることを確認するネガティブ単体テストの1つが失敗し始めました。この時まで、テストは常に合格していました。
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"