Джанго и селен интеграции - PullRequest
5 голосов
/ 24 ноября 2011

Я пытаюсь интегрировать мое приложение django с селеном для запуска тестов на селен по команде manage.py test (мне нужно что-то для автоматического запуска testserver). Использование django-selenium для этой интеграции. Когда я запускаю пример проекта из django-selenium, все идет хорошо. Но когда я запускаю реальное приложение, которое использует статические файлы, я получаю это:

      File "env\lib\site-packages\django\core\servers\basehttp.py",
 line 283, in run
    self.result = application(self.environ, self.start_response)
  File "env\lib\site-packages\django_selenium\selenium_server.p
y", line 45, in test_app
    return handler(environ, start_response)
  File "env\lib\site-packages\django\contrib\staticfiles\handle
rs.py", line 68, in __call__
    return self.application(environ, start_response)
  File "env\lib\site-packages\django\core\handlers\wsgi.py", li
ne 272, in __call__
    response = self.get_response(request)
  File "env\lib\site-packages\django\core\handlers\base.py", li
ne 153, in get_response
    response = self.handle_uncaught_exception(request, resolver, sys.exc_info())

  File env\lib\site-packages\django\core\handlers\base.py", li
ne 218, in handle_uncaught_exception
    return callback(request, **param_dict)
  File "env\lib\site-packages\django\utils\decorators.py", line
 93, in _wrapped_view
    response = view_func(request, *args, **kwargs)
  File "env\lib\site-packages\django\views\defaults.py", line 3
0, in server_error
    t = loader.get_template(template_name) # You need to create a 500.html templ
ate.
  File "env\lib\site-packages\django\template\loader.py", line
157, in get_template
    template, origin = find_template(template_name)
  File "env\lib\site-packages\django\template\loader.py", line
138, in find_template
    raise TemplateDoesNotExist(name)
TemplateDoesNotExist: 500.html

Похоже, это вызвано статическим обработчиком файлов ....

Как я могу исправить эту ошибку? DEBUG - True, и у меня есть статические обработчики URL в urls.py

1 Ответ

6 голосов
/ 22 ноября 2012

Тестовый сервер всегда работает с DEBUG = False;здесь https://docs.djangoproject.com/en/dev/topics/testing/:

Независимо от значения параметра DEBUG в вашем файле конфигурации, все тесты Django выполняются с DEBUG = False.Это сделано для того, чтобы убедиться, что наблюдаемый вывод вашего кода совпадает с тем, что будет видно в производственных настройках.

Так что вы не можете полагаться на обработку статических файлов в DEBUG, вам нужен явный производственныйкак способ обработки их для теста, чтобы найти их.У вас может быть специальный раздел в urls.py, который включает разработку serve(), когда вы запускаете test:

if 'test' in sys.argv:
    static_url = re.escape(settings.STATIC_URL.lstrip('/'))
    urlpatterns += patterns('',
        url(r'^%s(?P<path>.*)$' % static_url, 'django.views.static.serve', {
            'document_root': settings.STATIC_ROOT,
        }),
    )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...