Как написать в 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