Когда стоит использовать assert?

Здравствуйте, я обладаю поверхностным пониманием того, когда стоит использовать оператор assert. Читал, что его стоит использовать для самопроверки кода и для помощи выявления ошибок.

Вот мой код:
from databases import Database
from sqlalchemy import Table


class BaseCRUD:
    storage:       Database
    storing_table: Table

    def __init__(self, storage: Database, storing_table: Table) -> None:
        self.storage, self.storing_table = storage, storing_table

    async def passage_through_fields(self, data: dict):
        columns = [column.name for column in self.storing_table.columns]


Проверку в методе passage_through_fields я могу реализовать двумя способами:

Первый
for key in data.keys():
            assert key not in columns, ValueError(
                f'The table called {self.storing_table.name} does not contain the column called {key}'
            )

И второй
for key in data.keys():
            if key not in columns:
                raise ValueError(
                    f'The table called {self.storing_table.name} does not contain the column called {key}'
                )


На всякий случай напишу, что я пишу сервис в формате json API и ошибка, которая будет вызываться в вышеуказанном методе не будет относится к пользователям. Она вызывается вследствие того, что в полученном словаре могут находиться ключи не соответствующие колонкам в таблице SQLAlchemy, следовательно это ошибка будет для программистов, а не для потребителей.
  • Вопрос задан
  • 331 просмотр
Решения вопроса 1
@dooMoob
ИМХО, все ошибки должны возбуждаться и обрабатываться одним способом, assert прекрасно подходит для тестов, для продакшн кода это бессмысленная фича. И тем более эти ассерты можно полностью отключить в коде, что сведет смысл вашей проверки к 0
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@qid00000000
Мало что знаю, но информацию найду в гугле
Тут очень хорошо расписано https://m.habr.com/ru/post/141080/

Помимо использования assert, вы можете запускать тестирование своего кода через специальные модули, например unittest , что более применимо на практике в компаниях.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы