我在django中有一个端点/docs
,我只想在设置中的DEBUG = True
时可见,否则它应该抛出404。我的设置是这样的
在网址.py在
urlpatterns = ...
if settings.DEBUG:
urlpatterns += [
url(r'^docs/$', SwaggerSchemaView.as_view(), name='api_docs'),
]
但是,在进行测试时,django不会自动重新加载urls.py
,这意味着简单地将DEBUG
重写为True
或{
我的测试看起来像这样
^{pr2}$现在奇怪的是:当我使用pytest path/to/test.py::APIDocsTestWithDebug
和pytest path/to/test.py::APIDocsTestWithoutDebug
分别运行测试时,两个测试都通过了。但是,如果我将测试文件作为一个整体运行(pytest path/to/test.py
),APIDocsTestWithDebug
总是失败。它们单独工作而不是一起工作这一事实告诉我,url覆盖是有效的,但是当测试串联起来时,会有一些bug把事情搞砸。我想知道是否有人遇到过类似的问题,要么有完全不同的解决方案,要么能给我一些提示,说明我做错了什么。在
我为同样的问题而挣扎。问题是Django在初始化时加载
urlpatterns
一次,并且用修饰符重写设置不会更改最初加载的内容。在以下是对我有效的方法-尝试在失败的测试用例之前重新加载
urls
模块(基于this)并用clear_url_caches()
清除url缓存:PS:您可能还想稍后恢复urlpatterns—只需在其他
settings
中运行reload_urlconf
。在相关问题 更多 >
编程相关推荐