У меня есть проект, который использует поисковую систему SOLR через django-haystack.Поисковая система находится на другом работающем сервере, и прикасаться к нему во время теста нежелательно (на самом деле это невозможно, поскольку доступ к этому хосту защищен брандмауэром)
Я использую стандартный тестер django.К счастью, он дает мне настройки тестового объекта, которые я могу изменить по своему вкусу, но оказывается, что это не конец истории.
Многие вещи в django-haystack создаются во время импорта,поэтому к тому времени, когда я изменяю настройки тестов в моем организаторе тестов, уже слишком поздно, и, несмотря на то, что я заменяю SEARCH_BACKEND на фиктивный, тесты по-прежнему вызывают SOLR.Проблема не является специфичной для HAYSTACK - такая же проблема происходит с mongoengine.Любые операторы уровня класса (например, CharField (default = Blah.objects.find (...))) выполняются во время создания экземпляра, прежде чем django сможет изменить настройки.
Конечно, кореньпроблема заключается в том, что настройки Django представляют собой страшный глобально изменяемый беспорядок и что Django не предоставляет централизованного места для кода реализации.Учитывая это, есть ли какие-либо предложения о том, какое тестовое решение будет самым простым?В данный момент я думаю о сценарии оболочки, который изменит переменную среды DJANGO_SETTINGS на test_settings и запустит тест ./manage.py впоследствии.Было бы лучше, если бы я все еще мог делать что-то через ./manage.py.
Есть идеи получше?Люди с похожими проблемами?