Как правильно использовать assertRaises в Django
У меня есть следующая функция проверки в моей модели:
@classmethod
def validate_kind(cls, kind):
if kind == 'test':
raise ValidationError("Invalid question kind")
Который я пытаюсь проверить следующим образом:
w = Model.objects.get(id=1)
self.assertRaises(ValidationError, w.validate_kind('test'),msg='Invalid question kind')
Я тоже попробовал:
self.assertRaisesRegex(w.validate_kind('test'),'Invalid question kind')
Оба они работают неправильно. Что я делаю не так?
1 ответ:
Способ вызова
assertRaises
неверен - вам нужнопередать вызываемую вместо вызова самой функции и передать любые аргументы функции в качестве аргументовassertRaises
. Измените его на:Обратите внимание, что вы не можете проверить сообщение об исключении с помощью этой конструкции - Если вы хотите проверить сообщение, вам нужно использоватьself.assertRaises(ValidationError, w.validate_kind, 'test')
assertRaises
в качестве контекстного менеджера:with self.assertRaises(ValidationError, msg='Invalid question kind'): w.validate_kind('test')