2016-11-21 15 views
0

我在我的urls.py下面的结构 - 它可以让我直观地检查电子邮件,我在浏览器中发送的时候我正在开发的格式:如何在Django tests.py文件中的每个测试之后重新评估我的urls.py文件?

urlpatterns = [Various url pattenrns] 

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

我的问题是,当我运行测试套件的代码只检查一次settings.DEBUG - 并非每次测试或甚至运行TestCase

我想在我的测试,适用于DEBUG=True URLPATTERN的东西,如使用@override_settings装饰:

# Most of my tests run fine with Debug=False 

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

不过,我似乎无法得到这个正确切换之间的网址模式测试...大概是因为我的urls.py文件只为整个应用程序的测试加载一次。

有没有办法在我的urls.py中使用这种类型的构造并运行我的测试?是否有我不应该在我的urls.py中使用这种类型的条件的原因?

回答

2

正如你所说,使用​​将无法​​正常工作,因为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

相关问题