#django
Вопрос:
Я создал AppConfig
приложение, которое использует post_migrate
сигнал для запуска дополнительного SQL каждый раз, когда я выполняю миграцию. В своих тестах я иногда использую --keepdb
для ускорения выполнения тестов, но это все равно вызывает post_migrate
сигнал. Как я могу проверить --keepdb
, использовался ли флаг, чтобы я мог пропустить выполнение дополнительных команд SQL? Я просмотрел документацию по Django и исходный код и, похоже, не могу найти никакого способа сделать это.
Ответ №1:
Я смог решить эту проблему, создав тестировщика, который хранит --keepdb
флаг в настройках, как это:
from django.conf import settings
from django.test.runner import DiscoverRunner
class KeepDBTestRunner(DiscoverRunner):
def __init__(self, *args, **kwargs):
settings.KEEP_DB = kwargs.get('keepdb', False)
super().__init__(*args, **kwargs)