sergey_1990
@sergey_1990
1

Как протестировать блок except если он не поднимает исключение?

Доброго дня, нужна помощь с вопросом тестирования блока except в джанге, который не поднимает исключение
@receiver(post_save, sender=AgentRequest)
def action_after_save(instance, **kwargs):
    try:
        send_email(instance)
    except Exception as e:
        logger = logging.getLogger("Send mail")
        logger.error(f"Ошибка отправки {str(e)}")
        #raise e   # ЕСЛИ РАССКОМЕНТИРУЮ ТЕСТ ПРОЙДЁТ

class AgentTest(TestCase):
    def test_action_after_save(self):
        """Тест action_after_save"""
        with self.assertRaises(Exception):
            action_after_save(instance=None)



Creating test database for alias 'default'...
System check identified no issues (0 silenced).
Ошибка отправки 'NoneType' object has no attribute 'email_text'
F...
======================================================================
FAIL: test_action_after_save (agent.tests.AgentTest.test_action_after_save)
Тест action_after_save
----------------------------------------------------------------------
Traceback (most recent call last):
File "/home/app/web/agent/tests.py", line 57, in test_action_after_save
with self.assertRaises(Exception):
AssertionError: Exception not raised

----------------------------------------------------------------------
  • Вопрос задан
  • 61 просмотр
Решения вопроса 2
@Everything_is_bad
Так на assertRaises надо тестить send_email, а action_after_save надо тестить на запись в logger, если вообще такое надо тестить
Ответ написан
sergey_1990
@sergey_1990 Автор вопроса
1
В данном случае достаточно, кто помогал спасибо!
def test_action_after_save(self):
        """Тест action_after_save"""
        with self.assertLogs('Send mail', level='ERROR'):
            action_after_save(instance=None)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы