Ошибка получения при использовании пользовательского исключения в python

#python #mongodb

#python #mongodb

Вопрос:

у меня есть пользовательское исключение для вставки данных:

 class ErrorOnInsert(BaseException):
    """Exception raised for errors in insert data to db

    Attributes:
        resource -- resource name
        message -- explanation of the error
    """

    def __init__(self, resource: str):
        self.message = 'Failed to insert data for {}!'.format(resource)
        super().__init__(self.message)
 

исключение используется в этой функции вставки для монго:

 def _add(self, data: RunnerRating):
        try:
            dict_data = data.as_dict()

            self.collection[self.document_name].insert_one(
                        dict_data)
            self.list_data.add(data)
        except ErrorOnInsert(self.document_name) as e:
            raise e
 

и я пытаюсь протестировать исключение, self.repo._add(None) но оно показывает ошибку примерно так:

НЕУДАЧНЫЕ тесты /интеграция/test_repo.py::RatingRepoTest::test_add — Ошибка типа: перехват классов, которые не наследуются от BaseException, не допускается

Ответ №1:

Ваш синтаксис выглядит так, как будто это уловка с совпадением с шаблоном (чего нет в Python).

Может быть, вы ищете

 def _add(self, data: RunnerRating):
    try:
        dict_data = data.as_dict()
        self.collection[self.document_name].insert_one(dict_data)
        self.list_data.add(data)
    except Exception as e:
        raise ErrorOnInsert(self.document_name) from e