Тестирование повторно используемых приложений Django с помощью тестера Django - PullRequest
0 голосов
/ 24 февраля 2012

Я хочу протестировать небольшое приложение многократного использования, которое поставляется с собственным модулем настроек. Глобальные (проектные) настройки доступны в настройках приложения для поддержки переопределения переменных, например

# in <my_app>/settings.py
from django.conf import settings
MY_SETTING_VAR = getattr(settings, 'MY_OVERRIDDEN_VAR', False)

Когда я запускаю тесты с manage.py test myapp , я получаю следующее:

ImportError: Настройки не могут быть импортированы, потому что среда переменная DJANGO_SETTINGS_MODULE не определена.

Как правильно запускать тесты в этом случае?

Ответы [ 2 ]

1 голос
/ 24 февраля 2012

ImportError: Невозможно импортировать настройки, поскольку переменная окружения DJANGO_SETTINGS_MODULE не определена.

Вы получаете это, потому что DJANGO_SETTINGS_MODULE не находится в ваших переменных окружения Python ... Чтобы решить вашу проблему, вы должны определить это как

import os
os.environ['DJANGO_SETTINGS_MODULE'] = '<django_application_root>.settings'

Вы можете добавить его в свой корневой файл __init__.py ...

1 голос
/ 24 февраля 2012

Я не уверен, я протестировал именно то, что вы написали, и это работает для меня:

<<< 12:18.25 Fri Feb 24 2012!~/testproject 
<<< jpic@germaine!10019 env
>>> ./manage.py test testapp                   
Creating test database for alias 'default'...
Destroying old test database 'default'...
.
----------------------------------------------------------------------
Ran 1 test in 0.000s

OK
Destroying test database for alias 'default'...
<<< 12:18.27 Fri Feb 24 2012!~/testproject 
<<< jpic@germaine!10020 env
>>> cat testapp/tests.py
from django.test import TestCase

from .settings import *

class SomeTestCase(TestCase):
    def testSomething(self):
        self.assertEqual(MY_SETTING_VAR, 'default')
<<< 12:18.30 Fri Feb 24 2012!~/testproject 
<<< jpic@germaine!10021 env
>>> cat testapp/settings.py
from django.conf import settings
MY_SETTING_VAR = getattr(settings, 'MY_OVERRIDDEN_VAR', 'default')

Вы хотите убедиться, что ваш фактический код соответствует этому рабочему коду.

Лучше, чтобы приложение включало фиктивный проект, который демонстрирует приложение или, по крайней мере, позволяет проводить тестирование. Например:

<<< 12:42.56 Fri Feb 24 2012!~/testproject/testapp 
<<< jpic@germaine!10034 E:1 env
>>> pip install -e git+git@github.com:subsume/django-subscription.git#egg=sub
Obtaining sub from git+git@github.com:subsume/django-subscription.git#egg=sub
  Cloning git@github.com:subsume/django-subscription.git to /home/jpic/env/src/sub
  Running setup.py egg_info for package sub

Installing collected packages: sub
  Running setup.py develop for sub

    Creating /home/jpic/env/lib/python2.7/site-packages/django-subscription.egg-link (link to .)
    Removing django-subscription 0.0 from easy-install.pth file
    Adding django-subscription 0.1 to easy-install.pth file

    Installed /home/jpic/env/src/sub
Successfully installed sub
Cleaning up...
<<< 12:43.08 Fri Feb 24 2012!~/testproject/testapp 
<<< jpic@germaine!10035 env
<<< 12:43.11 Fri Feb 24 2012!~/testproject/testapp 
<<< jpic@germaine!10035 env
>>> cd ../../env/src/sub
<<< 12:43.15 Fri Feb 24 2012!~/env/src/sub 
<<< jpic@germaine!10036 G:master env
>>> ls
django_subscription.egg-info  docs  README  setup.py  subscription  subscription_test_project
<<< 12:43.16 Fri Feb 24 2012!~/env/src/sub 
<<< jpic@germaine!10037 G:master env
>>> cd subscription_test_project 
<<< 12:43.20 Fri Feb 24 2012!~/env/src/sub/subscription_test_project 
<<< jpic@germaine!10038 G:master env
>>> ./manage.py test subscription
Creating test database for alias 'default'...
........
----------------------------------------------------------------------
Ran 8 tests in 0.012s

OK
Destroying test database for alias 'default'...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...