Подражание методу 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'

Кто-нибудь сталкивался с подобным?

Вернуться на верх