Как мне провести тестирование блока except, если исключение в нем не вызывается?

Как я могу протестировать блок except в Django, который не вызывает исключение?
  • 1 декабря 2023 г. 13:08
Ответы на вопрос 3
Если у вас есть блок кода, который обрабатывает исключение и вы хотите протестировать, как он справляется с этим, вы можете искусственно вызвать это исключение в условиях теста.

Ваш блок кода может выглядеть примерно так:

```python
def some_function():
    try:
        # some code that can raise an exception
    except SomeException:
        # exception handling
```

Чтобы протестировать блок except, вы можете используйте команду `raise` для вызова исключения во время тестирования:

```python
def test_some_function():
    try:
        raise SomeException
    except SomeException:
        some_function()
```

В этом случае вызываемая функция (some_function) будет выполнена в контексте обработки исключений.

Еще один вариант - это использование мок-объектов (patching/mocking):

```python
from unittest.mock import patch

def test_some_function():
    with patch('module.some_function', side_effect=SomeException):
        # your test code
```

Тут мы создаем мок-объект для функции, который будет вызывать подмененное исключение (SomeException) каждый раз, когда функция вызывается. 

Важно учесть, что вы должны убедиться, что обработка исключений работает так, как вы ожидаете. Это может включать проверку того, что определенные функции вызываются после возникновения исключения, проверку того, что некоторые значения были изменены определенным образом и т.д.
Вы должны использовать assertRaises для тестирования функции send_email 
 Тестирование action_after_save должно быть нацелено на запись в logger, если вам действительно необходимо провести такое тестирование.
Похожие вопросы