Testy Django nie podnoszą błędu integralności dla CharField
Jeśli masz następujący model Django (1.4):
from django.db import models
class SimpleModel(models.Model):
name = models.CharField(max_length=100)
I ten prosty test:
from django.test import TestCase
from models import SimpleModel
from django.db import IntegrityError
class SimpleTest(TestCase):
def test_integrity_error(self):
with self.assertRaises(IntegrityError):
m = SimpleModel()
m.save()
Jako baza danych używana jest baza danych sqlite3. Jeśli teraz uruchomię testy zpython manage.py test <appname>
test kończy się niepowodzeniemAssertionError: IntegrityError not raised
.
Pytanie brzmi:czemu?
O ile rozumiem (lub uważam, że rozumiem) Django, domyślne wartości pól toblank=False
inull=False
więc zakładam, że zapisanie instancji modelu z wartością domyślną (która dla CharField powinna być pustym ciągiem) z pewnością się nie powiedzie! Dlaczego tak się nie dzieje?