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().
Я ожидал, что конфигурация приложения не будет вызвана вообще.