2016-11-21 8 views
0

У меня есть следующая конструкция в моем urls.py - это позволяет мне визуально проверить формат писем, которые я отправляю в браузере, когда я разрабатываю:Как мне переоценить файл urls.py после каждого теста в файле Django tests.py?

urlpatterns = [Various url pattenrns] 

if settings.DEBUG: 
    urlpatterns += [URL Pattern for checking emails] 

Моя проблема в том, что, когда я бегу мой В тестовом наборе код проверяет только settings.DEBUG один раз - не каждый раз проходит тест или даже TestCase.

Я пытаюсь использовать @override_settings декоратора перед моими испытаниями, которые применяются к DEBUG=True URLPATTERN что-то вроде:

# Most of my tests run fine with Debug=False 

@override_settings(DEBUG=True) 
# Tests that use the URL pattern for checking emails 

Однако, я не могу показаться, чтобы получить это правильно переключить шаблон Url между тестов ... предположительно, потому что мой файл urls.py загружается только один раз для всех тестов приложения.

Есть ли способ использовать этот тип конструкции в моем urls.py и запустить мои тесты? Есть ли причина, по которой я не должен использовать этот тип условного выражения в моем urls.py?

ответ

2

Как вы говорите, использование @override_settings(DEBUG=True) не будет работать, поскольку Django уже загрузил конфигурацию URL и оценил settings.DEBUG.

Альтернативой может быть создание другой конфигурации url, которая всегда включает в себя представление отладки.

# mysite/debug_urls.py 
from django.conf.urls import url 
from mysite.urls import urlpatterns as mysite_urlpatterns 

urlpatterns = mysite_urlpatterns + [ 
    url(...), 
] 

Затем, в тесте, override the URL config:

@override_settings(ROOT_URLCONF='mysite.debug_urls') 
+0

Это фантастическое решение, спасибо! – YPCrumble