Получение ошибки атрибута в базовой команде Dango- Проверка
Я работаю над учебным проектом. Тот же код работает для преподавателя, но не для меня.
У меня есть файл для пользовательских команд:
import time
from psycopg2 import OperationalError as Psycopg2OpError
from django.db.utils import OperationalError
from django.core.management.base import BaseCommand, CommandError
class Command(BaseCommand):
def handle(self, *args, **options):
self.stdout.write('waiting for database...')
db_up = False
while db_up is False:
try:
self.check(databases=['default'])
db_up = True
except(Psycopg2OpError, OperationalError):
self.stdout.write("Database unavailable, waiting 1 second...")
time.sleep(1)
self.stdout.write(self.style.SUCCESS('Database available!'))
И я пишу тестовый пример для того же самого в файле с именем test_command.py, который приведен ниже:
from unittest.mock import patch
from psycopg2 import OperationalError as Psycopg2OpError
from django.core.management import call_command
from django.db.utils import OperationalError
from django.test import SimpleTestCase
@patch('core.management.commands.wait_for_db.Command.Check')
class CommandTests(SimpleTestCase):
def test_wait_for_db_ready(self, patched_check):
"""test waiting for db if db ready"""
patched_check.return_value = True
call_command('wait_for_db')
patched_check.assert_called_once_with(databases=['default'])
@patch('time.sleep')
def test_wait_for_db_delay(self, patched_sleep, patched_check):
"""test waiting for db when getting operational error"""
patched_check.side_effect = [Psycopg2OpError] * 2 + \
[OperationalError] * 3 + [True]
call_command('wait_for_db')
self.assertEqual(patched_check.call_count, 6)
patched_check.assert_called_with(databases=['default'])
Когда я запускаю тесты, я получаю сообщение об ошибке:
Ошибка атрибута: <класс 'core.management.commands.wait_for_db.Command'> не имеет атрибута 'Check'
Мне не удается устранить ошибку.
Структура файлов:
