Подражание методу ManyToMany добавьте
Мне нужна помощь. Я хочу проверить случай исключения в своем тесте, поэтому мне нужно поиздеваться над методом 'add()'. Как я могу протестировать его?
моя модель:
class CourseGroup(models.Model):
students = models.ManyToManyField(
"users.User",
blank=True,
related_name="course_groups_students",
)
мой метод:
def add_student_to_group(student: User):
course_groups = CourseGroup.objects.all()
for group in course_groups:
try:
group.students.add(student)
except Exception as ex:
sentry_message(
title="some title",
message="some message",
)
мой тест
Я пытаюсь сделать это вот так, но ничего не получается.
class AddStudentToGroupTestCase(TestCase):
@classmethod
def setUp(cls):
cls.course_group_1 = CourseGroupFactory()
cls.course_group_2 = CourseGroupFactory()
cls.course_group_3 = CourseGroupFactory()
cls.student = StudentFactory()
@patch("users.service.sentry_message")
@patch("users.models.CourseGroup.students.add")
def test_add_student_with_exception(self, mock_add, mock_sentry_message):
mock_add.side_effect = Exception("ERROR")
# call
with self.assertRaises(Exception):
add_student_to_group(student=self.student)
mock_sentry_message.assert_called()
Я получаю ошибку:
AttributeError: <django.db.models.fields.related_descriptors.ManyToManyDescriptor object at 0x7f643f2afd10> does not have the attribute 'add'
Кто-нибудь сталкивался с подобным?