Перемешивание Django для плагина: не могу найти settings.py - PullRequest
0 голосов
/ 27 января 2012

Я пытаюсь написать тест для плагина django, который называется Dynamic Response (доступен на GitHub), но у меня возникли некоторые проблемы. Используя mock, я пытаюсь смоделировать некоторые методы Django, такие как render_to_response (я не собираюсь тестировать django в конце концов), но когда я пытаюсь это сделать, я получаю сообщение об ошибке, в котором говорится, что не удается найти settings.py это не должно быть, так как это плагин для использования в других проектах, а не проект сам по себе. Я пробовал следующий код:

class ResponseTest (unittest.TestCase):

    @patch('dynamicresponse.response.render_to_response')
    def test_is_testframework_working(self, render_to_response):
        from dynamicresponse.response import SerializeOrRender
        SerializeOrRender()

Что, как указано, выдает сообщение об ошибке. Заглушая HttpResponse, HttpRedirect не выдает эти ошибки ...

дает следующую трассировку стека

Response (unittest.loader.ModuleImportFailure) ... ERROR

======================================================================
ERROR: response (unittest.loader.ModuleImportFailure)
----------------------------------------------------------------------
ImportError: Failed to import test module: response
Traceback (most recent call last):
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/unittest/loader.py", line 252, in _find_tests
    module = self._get_module_from_name(name)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/unittest/loader.py", line 230, in _get_module_from_name
    __import__(name)
  File "/Users/skinney/Workspace/django-dynamicresponse/tests/response.py", line 5, in <module>
    class ResponseTest (unittest.TestCase):
  File "/Users/skinney/Workspace/django-dynamicresponse/tests/response.py", line 7, in ResponseTest
    @patch('dynamicresponse.response.render_to_response')
  File "/Users/skinney/Workspace/django-dynamicresponse/tests/mock.py", line 720, in patch
    target = _importer(target)
  File "/Users/skinney/Workspace/django-dynamicresponse/tests/mock.py", line 514, in _importer
    thing = _dot_lookup(thing, comp, import_path)
  File "/Users/skinney/Workspace/django-dynamicresponse/tests/mock.py", line 503, in _dot_lookup
    __import__(import_path)
  File "/Users/skinney/Workspace/django-dynamicresponse/dynamicresponse/response.py", line 3, in <module>
    from django.shortcuts import render_to_response
  File "/Library/Python/2.7/site-packages/django/shortcuts/__init__.py", line 10, in <module>
    from django.db.models.manager import Manager
  File "/Library/Python/2.7/site-packages/django/db/__init__.py", line 14, in <module>
    if not settings.DATABASES:
  File "/Library/Python/2.7/site-packages/django/utils/functional.py", line 276, in __getattr__
    self._setup()
  File "/Library/Python/2.7/site-packages/django/conf/__init__.py", line 40, in _setup
    raise ImportError("Settings cannot be imported, because environment variable %s is undefined." % ENVIRONMENT_VARIABLE)
ImportError: Settings cannot be imported, because environment variable DJANGO_SETTINGS_MODULE is undefined.


----------------------------------------------------------------------
Ran 1 test in 0.000s

FAILED (errors=1)

1 Ответ

0 голосов
/ 27 января 2012

Вы не можете протестировать приложения django без какого-либо проекта (реального или фиктивного), имеющего собственный файл настроек.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...