2010-02-17 4 views
2

У меня проблема ... мы пишем проект с помощью django, и я пытаюсь использовать django.test.client с носом для тестирования тестов.проблема клиента клиента django

Наш код выглядит так:

from simplejson import loads 
from urlparse import urljoin 

from django.test.client import Client 

TEST_URL = "http://smakly.localhost:9090/" 

def test_register(): 

    cln = Client() 

    ref_data = {"email": "[email protected]", "name": "Василий", "website": "http://hot.bear.com", "xhr": "true"} 

    print urljoin(TEST_URL, "/accounts/register/") 
    response = loads(cln.post(urljoin(TEST_URL, "/accounts/register/"), ref_data)) 

    print response["message"] 

и в выходной нос Ловлю:

Traceback (most recent call last): 
    File "/home/psih/work/svn/smakly/eggs/nose-0.11.1-py2.6.egg/nose/case.py", line 183, in runTest 
    self.test(*self.arg) 
    File "/home/psih/work/svn/smakly/src/smakly.tests/smakly/tests/frontend/test_profile.py", line 25, in test_register 
    response = loads(cln.post(urljoin(TEST_URL, "/accounts/register/"), ref_data)) 
    File "/home/psih/work/svn/smakly/parts/django/django/test/client.py", line 313, in post 
    response = self.request(**r) 
    File "/home/psih/work/svn/smakly/parts/django/django/test/client.py", line 225, in request 
    response = self.handler(environ) 
    File "/home/psih/work/svn/smakly/parts/django/django/test/client.py", line 69, in __call__ 
    response = self.get_response(request) 
    File "/home/psih/work/svn/smakly/parts/django/django/core/handlers/base.py", line 78, in get_response 
    urlconf = getattr(request, "urlconf", settings.ROOT_URLCONF) 
    File "/home/psih/work/svn/smakly/parts/django/django/utils/functional.py", line 273, in __getattr__ 
    return getattr(self._wrapped, name) 
AttributeError: 'Settings' object has no attribute 'ROOT_URLCONF' 

Мой файл settings.py имеет этот атрибут.

Если я получаю данные с сервера со стандартом urllib2.urllopen().read(), он работает надлежащим образом.

Любые идеи, как я могу решить этот случай?

+1

Go посмотрите на http://stackoverflow.com/questions/2240067/why-does -носо-не-видимые-любые-мои-экологические переменные или http://stackoverflow.com/questions/1484293/how-do-i-use-pymock-and-nose-with-django-models –

+0

Gabriel , thanx, эти решения выглядят совершенно ясными. , прежде чем задавать вопрос, я пытался добавить в начало строки тестового файла: os.environ ["DJANGO_SETTINGS_MODULE"] = "smakly.frontend.settings" , но по-прежнему нет помощи. после прочтения ваших ссылок я экспортировал эту переменную из bash - это помогает. И логичный вопрос - как я могу сделать такой экспорт из тестового файла python? –

+0

имел ту же проблему, я просто удалял файл settings.pyc и перезагружал сервер, и ошибка пропала ... странный материал;) – derevo

ответ

0

Возможно, вы хотите, чтобы джанго-нос, если вы хотите использовать нос.

http://github.com/jbalogh/django-nose

Я бы рекомендовал использовать класс TestCase

http://docs.djangoproject.com/en/dev/topics/testing/

http://www.djangoproject.com/documentation/models/test_client/

+0

Обратите внимание, что URL-адреса не сформированы 'http: //.../ path /', а просто '/путь/' –

Смежные вопросы