Я тестирую проверки и проверяю ограничения на моей модели:
class MyModel(models.Model):
title = models.CharField()
class Meta:
models.CheckConstraint(
check=~Q(title='Word'),
name='title_cannot_be_word'
),
def clean(self):
error_dict = {}
if self.title == 'Word':
error_dict['title'] = 'Title can not be Word'
if error_dict:
raise ValidationError(error_dict)
В моем tests.py:
def test_validation(self):
with self.assertRaises(ValidationError):
m = MyModel(title='Word')
m.clean()
def test_constraint(self):
with self.assertRaises(Integrity):
m = MyModel.objects.create(title='Word')
Все это работает нормально, однако на практике у меня несколько CheckConstraints
и ValidationErrors
для разных полей, поэтому я хочу иметь возможность проверить, была ли поднята правильная ошибка.
Как я могу проверить, что поднят именованный CheckConstraint
, например title_cannot_be_word
, или именованный ValidationError
вроде error_dict['title']
поднят?