YPC*_*ble 2 django django-urls django-testing django-settings
我的 urls.py 中有以下结构 - 它允许我在开发时直观地检查在浏览器中发送的电子邮件的格式:
urlpatterns = [Various url pattenrns]
if settings.DEBUG:
urlpatterns += [URL Pattern for checking emails]
Run Code Online (Sandbox Code Playgroud)
我的问题是,当我运行测试套件时,代码仅检查settings.DEBUG一次 - 不是每次测试甚至TestCase运行时都检查。
我尝试在适用@override_settings于 urlpattern 的测试之前使用装饰器,DEBUG=True如下所示:
# Most of my tests run fine with Debug=False
@override_settings(DEBUG=True)
# Tests that use the URL pattern for checking emails
Run Code Online (Sandbox Code Playgroud)
但是,我似乎无法让它在测试之间正确切换 Url 模式...大概是因为我的 urls.py 文件仅在整个应用程序的测试中加载一次。
有没有办法在我的 urls.py 中使用这种类型的构造并运行我的测试?我是否有理由不应该在 urls.py 中使用这种类型的条件?
正如你所说,使用@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(...),
]
Run Code Online (Sandbox Code Playgroud)
然后,在您的测试中,覆盖 URL 配置:
@override_settings(ROOT_URLCONF='mysite.debug_urls')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
569 次 |
| 最近记录: |