Django не может ограничить создание модели, передавая отсутствие параметра в objects.create()
Я делаю сайт, используя Python, Django, pytest и метод TDD. Одна из моих целей - не позволить создать элемент в базе данных, если я не передаю никаких аргументов в качестве параметров в Item.objects.create()
.
У меня есть следующие тесты:
def test_not_possible_to_create_items_with_empty_name(self):
with pytest.raises(IntegrityError):
item = Item.objects.create()
Pytest не справляется с этим тестом и говорит, что он не поднимается: Failed: DID NOT RAISE <class 'django.db.utils.IntegrityError'>
Я не был уверен, что тест не работает или тип ошибки, которую он выдает, отличается, поэтому я сделал тест, чтобы проверить, работает ли он:
def test_something(self):
item = Item.objects.create()
И этот тест проходит, так что он не поднимается.
Моя модель выглядит следующим образом:
class Item(models.Model):
name = models.TextField(
null=False,
blank=False,
unique=True,
)
Я хочу, чтобы нельзя было создать недействительное имя типа "", но оно не поднимается, так как:
self = <item.tests.test.TestItemModel object at 0x7f79fd448910>
def test_not_possible_to_create_item_with_blank_name(self):
with pytest.raises(IntegrityError):
item = Item.objects.create(name="")
Failed: DID NOT RAISE <class 'django.db.utils.IntegrityError'>