Django подключает Signal, но приложения нет в INSTALLED_APPS
У меня есть два приложения Django, foo
и bar
, которые оба указаны в настройках INSTALLED_APPS
. foo
посылает сигнал, который получает bar
. Я хочу протестировать foo
. Поэтому я хочу изолировать его, т.е. bar
не должен прослушивать сигнал.
Обычно bar
подключается к сигналу с помощью метода AppConfig.ready()
:
class BarConfig(AppConfig):
def ready(self):
from foo.signals import foo_signal
from .signals import handle_foo_signal
foo_signal.connect(handle_foo_signal)
В тестовом коде я удаляю bar
из настройки INSTALLED_APPS
, используя декоратор @modify_settings()
:
@modify_settings(INSTALLED_APPS=dict(remove=["bar"]))
def test_foo(self):
...test code...
Я ожидал, что bar
не будет слушать сигнал. Однако он слушает.
Я знаю, что могу отключить каждый сигнал. Но я ищу способ временно "удалить" приложение полностью. Есть ли способ легко изолировать приложения и их приемники сигналов?
Я отладил код и обнаружил, что приложение bar
все еще находится в INSTALLED_APPS
при вызове ready()
.
Я ожидал, что конфигурация приложения не будет вызвана вообще.