Издевательство над time.sleep приведет к неудаче теста

Я написал этот тест, но чтобы не задерживать тест, я издеваюсь над time.sleep и тест столкнется с ошибкой.

from unittest.mock import patch
    @patch('time.sleep', return_value=None)
    def test_wait_for_db(self):
        """Test waiting for db"""
        with patch('django.utils.connection.BaseConnectionHandler.__getitem__') as gi:
            gi.side_effect = [OperationalError] * 5 + [True]
            call_command('wait_for_db')
            self.assertEqual(gi.call_count, 6)

Закомментировав эту вторую строку (@patch), программа будет работать правильно.

Вам нужно добавить аргумент к вашему test_wait_for_db. Поскольку вы используете декоратор, высмеиваемая функция передается в качестве аргумента этой функции

class CommandsTest(TestCase):
    @patch('time.sleep', return_value=None)
    def test_wait_for_db(self, mocked_sleep):

В вашем тесте вы можете проверить assert, если он действительно был вызван. Более подробная информация здесь.

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