Python Selenium和django调试工具栏

Python Selenium和django调试工具栏,python,django,selenium,django-debug-toolbar,Python,Django,Selenium,Django Debug Toolbar,我的带有Django 1.11.1和Django debug toolbar 1.8的网站在我的开发服务器(vagrant/gunicorn/nginx)上运行良好。我的常规测试套件运行良好。但是,当我告诉它运行selenium测试时,它会死掉,出现“djdt”不是注册的名称空间错误。我在URL、中间件和配置中有相应的条目。如果我使用curl localhost,它将返回带有调试工具栏的主页。如果我将工具栏设置为不显示show_工具栏代码,我的selenium测试仍然会崩溃,但网站仍然可以正常工

我的带有Django 1.11.1和Django debug toolbar 1.8的网站在我的开发服务器(vagrant/gunicorn/nginx)上运行良好。我的常规测试套件运行良好。但是,当我告诉它运行selenium测试时,它会死掉,出现
“djdt”不是注册的名称空间错误。我在URL、中间件和配置中有相应的条目。如果我使用curl localhost,它将返回带有调试工具栏的主页。如果我将工具栏设置为不显示show_工具栏代码,我的selenium测试仍然会崩溃,但网站仍然可以正常工作(并且不显示调试工具栏)

关于如何运行selenium测试的想法

> python manage.py test ann.selenium
Creating test database for alias 'default'...
Installed 8 object(s) from 1 fixture(s)
Installed 3 object(s) from 1 fixture(s)
Installed 2 object(s) from 1 fixture(s)
Installed 16 object(s) from 7 fixture(s)
Installed 6 object(s) from 1 fixture(s)
Installed 1 object(s) from 1 fixture(s)
Adding auth tokens for the API...
System check identified no issues (0 silenced).
Internal Server Error: /
Traceback (most recent call last):
  File "/home/vagrant/.virtualenvs/ann/lib/python3.5/site-packages/django/urls/base.py", line 77, in reverse
    extra, resolver = resolver.namespace_dict[ns]
KeyError: 'djdt'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/vagrant/.virtualenvs/ann/lib/python3.5/site-packages/django/core/handlers/exception.py", line 41, in inner
    response = get_response(request)
  File "/home/vagrant/.virtualenvs/ann/lib/python3.5/site-packages/django/utils/deprecation.py", line 142, in __call__
    response = self.process_response(request, response)
  File "/home/vagrant/.virtualenvs/ann/lib/python3.5/site-packages/debug_toolbar/middleware.py", line 134, in process_response
    bits[-2] += toolbar.render_toolbar()
  File "/home/vagrant/.virtualenvs/ann/lib/python3.5/site-packages/debug_toolbar/toolbar.py", line 64, in render_toolbar
    return render_to_string('debug_toolbar/base.html', context)
  File "/home/vagrant/.virtualenvs/ann/lib/python3.5/site-packages/django/template/loader.py", line 68, in render_to_string
    return template.render(context, request)
  File "/home/vagrant/.virtualenvs/ann/lib/python3.5/site-packages/django/template/backends/django.py", line 66, in render
    return self.template.render(context)
  File "/home/vagrant/.virtualenvs/ann/lib/python3.5/site-packages/django/template/base.py", line 207, in render
    return self._render(context)
  File "/home/vagrant/.virtualenvs/ann/lib/python3.5/site-packages/django/test/utils.py", line 107, in instrumented_test_render
    return self.nodelist.render(context)
  File "/home/vagrant/.virtualenvs/ann/lib/python3.5/site-packages/django/template/base.py", line 990, in render
    bit = node.render_annotated(context)
  File "/home/vagrant/.virtualenvs/ann/lib/python3.5/site-packages/django/template/base.py", line 957, in render_annotated
    return self.render(context)
  File "/home/vagrant/.virtualenvs/ann/lib/python3.5/site-packages/django/template/defaulttags.py", line 458, in render
    url = reverse(view_name, args=args, kwargs=kwargs, current_app=current_app)
  File "/home/vagrant/.virtualenvs/ann/lib/python3.5/site-packages/django/urls/base.py", line 87, in reverse
    raise NoReverseMatch("%s is not a registered namespace" % key)
django.urls.exceptions.NoReverseMatch: 'djdt' is not a registered namespace

显然,如果您正在进行selenium测试,那么答案是不要加载django_debug_工具栏

import sys
TESTING = len(sys.argv) > 1 and sys.argv[1] == 'test'

if not TESTING:
    MIDDLEWARE += ('debug_toolbar.middleware.DebugToolbarMiddleware',)
    INSTALLED_APPS += ('debug_toolbar', )
如果希望看到django调试工具栏。 如果是django 1.11,请尝试下面的代码。将“模式”替换为[](列表)。我在django调试工具栏1.8中进行了测试

请检查其他事项,如

  • 调试=真

  • MIDDLEWARE_CLASSES=['debug_toolbar.MIDDLEWARE.DebugToolbar MIDDLEWARE',]

  • 内部ip=['127.0.0.1',](相应地添加ip)


  • 由@Denise Mauldin发布的问题和解决方案,经django debug toolbar 1.9.1确认。其他信息:NoReverseMatch:“djdt”不是在模板…\site packages\debug\u toolbar\templates\debug\u toolbar\base.html中的模板呈现过程中注册的命名空间错误,回溯:文件“…\site packages\django\url\base.py”,反向额外,解析器=解析器.namespace\u dict[ns]
    if settings.DEBUG:
        import debug_toolbar
        urlpatterns += [
        url(r'^__debug__/', include(debug_toolbar.urls)),
        ]