Как написать в python unittest case для блока except, который просто использует оператор logger

Код для задания сельдерея:

import logging

from celery_once import QueueOnce
from celery import shared_task, current_task
from test.set_data import set_data_in_db

logger = logging.getLogger("celery")


@shared_task(base=QueueOnce, once={"graceful": True}, ignore_result=False)
def set_data_task():
    try:
        logger.info("Set data in db initiated")
        set_data_in_db(value=None)

    except Exception:
        logger.error("data could not be set", exc_info=True)

Мой пример unittest охватывает все, что находится в блоке try. Как я могу заставить мой unittest охватывать и блок except?

Когда вы вызываете метод set_data_task, может быть только одна ситуация из двух: либо метод выполняется нормально (блок try), либо он выбрасывает исключение (блок except).

Если вам нужно протестировать ваш блок except, вам нужно настроить ваш метод на выброс исключения, чтобы его можно было поймать и утвердить в вашем тесте

Вам нужно будет настроить set_data_in_db метод на выброс исключения, которое будет поймано

Для тестирования исключения можно прочитать pytest.raises

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