Las pruebas de Django no generan errores de integridad para CharField
Si tiene el siguiente modelo Django (1.4):
from django.db import models
class SimpleModel(models.Model):
name = models.CharField(max_length=100)
Y esta sencilla prueba:
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()
Como base de datos se utiliza una base de datos sqlite3. Si ahora ejecuto las pruebas conpython manage.py test <appname>
la prueba falla conAssertionError: IntegrityError not raised
.
La pregunta es:¿por qué?
Por lo que yo entiendo (o se piensa que entiende) Django, los valores predeterminados para los Campos sonblank=False
ynull=False
por lo que supondría que guardar una instancia de modelo con el valor predeterminado (que creo que para un CharField debería ser una cadena vacía) debería fallar. Entonces, ¿por qué no sucede esto?