Как остановить мои контекстные процессоры, ломающие юнит-тесты других приложений? - PullRequest
0 голосов
/ 17 октября 2011

У меня есть проект django, который состоит из нескольких проектов, а также django.contrib.auth.Когда я запускаю python manage.py test и запускаю модульные тесты auth, django пытается оценить все мои контекстные процессоры, в том числе относящиеся к другим приложениям.

Один из моих контекстных процессоров для другого приложения используетreverse для поиска URL-адреса для ссылки, которая не работает в модульных тестах auth, что приводит к сбою этих тестов.Как я могу решить эту проблему, чтобы мои контекстные процессоры не мешали выполнению модульных тестов для несвязанных приложений?

Спасибо.

Пример теста теста (мое другое приложение называется «монитор», и вmonitor / context_processors.py, пытается получить URL-адрес для monitor.views.dashboard)

======================================================================
ERROR: test_unknown_user (django.contrib.auth.tests.remote_user.RemoteUserTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/django/contrib/auth/tests/remote_user.py", line 50, in test_unknown_user
    response = self.client.get('/remote_user/', REMOTE_USER='newuser')
  File "/usr/lib/python2.7/site-packages/django/test/client.py", line 445, in get
    response = super(Client, self).get(path, data=data, **extra)
  File "/usr/lib/python2.7/site-packages/django/test/client.py", line 229, in get
    return self.request(**r)
  File "/usr/lib/python2.7/site-packages/django/core/handlers/base.py", line 111, in get_response
    response = callback(request, *callback_args, **callback_kwargs)
  File "/usr/lib/python2.7/site-packages/django/views/decorators/cache.py", line 79, in _wrapped_view_func
    response = view_func(request, *args, **kwargs)
  File "/usr/lib/python2.7/site-packages/django/contrib/auth/tests/urls.py", line 13, in remote_user_auth_view
    c = RequestContext(request, {})
  File "/usr/lib/python2.7/site-packages/django/template/context.py", line 177, in __init__
    self.update(processor(request))
  File "/home/me/hydra/hydra-server/monitor/context_processors.py", line 13, in menu_items
    items.append({"url": reverse('monitor.views.dashboard'), "caption": "Dashboard"})
  File "/usr/lib/python2.7/site-packages/django/core/urlresolvers.py", line 391, in reverse
    *args, **kwargs)))
  File "/usr/lib/python2.7/site-packages/django/core/urlresolvers.py", line 337, in reverse
    "arguments '%s' not found." % (lookup_view_s, args, kwargs))
NoReverseMatch: Reverse for 'monitor.views.dashboard' with arguments '()' and keyword arguments '{}' not found.

1 Ответ

1 голос
/ 17 октября 2011
  1. Вы можете тихо упасть на NoReverseMatch (возможно, при регистрации ошибки).
  2. Вы можете передать строку для обратного в шаблоне и затем повернуть ее там с помощью тега {% url %}, а не в контекстном процессоре.
  3. Вы можете просто игнорировать это, зачем тестировать Django, если вы его не исправляете?
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...