#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