Модульный тест Python: создание исключения из импортируемого класса - PullRequest
0 голосов
/ 19 марта 2019

Я хочу транзакции. AutoSave.save () (импортировано) из сценария автосохранения, чтобы выдать исключение OperationalError при запуске модульного теста, но оно не вызывает исключение,он просто проходит тест, даже если я не уловил это исключение OperationalError .Я что-то не так делаю с насмешкой над объектом?Я пробовал mock_request.return_value, mock_request.side_effect и mock_request.return_value.side_effect, и ни один из них не работал.Для ясности код является только частичным.

Модульный тест для автосохраняемого сценария:

from django.db.utils import OperationalError
from mock import patch

class CommandsTestCase(TestCase):

    class FakeResponse(object):

        def __init__(self, content, should_raise=False):
            self.content = content
            self.should_raise = should_raise

        def raise_for_status(self):
            if self.should_raise:
                raise OperationalError('TEST: This exception is raised to mock a Database failure.')

    def test_autosave(self):
        with patch('folder.apps.AutoSave.AutoSave.save') as mock_request:
            mock_request.return_value = self.FakeResponse(content='', should_raise=True)
            call_command('autosave')

сценарий autosave.py

from isc_utils.commands import MyCommand
from isc_utils.db import queryset_iterator
from folder.apps.folder.models import Transaction
from folder.apps.AutoSave import AutoSave

class Command(MyCommand):
    def run(self, *args, **kwargs):
        upload_dt = datetime.datetime.now()
        qs = Transaction.objects.filter(
            upload_datetime__gte=upload_dt
        )
        for transaction in queryset_iterator(qs):
            transaction_id = transaction.id

            try:
                transaction.AutoSave.save()
            except (ValidationError, ResourceNotFound):
                self.logger.error('autosave failed RID %s', transaction.id, exc_info=True)
                continue
...