2013-09-19 1 views
0

У меня есть проект GAE/Django, и я пытаюсь сделать Enviroment работу функционально-тест с WebTest, макет проекта выглядит следующим образом:В противном случае функциональный тест на GAE, Джанго, WebTest

/gaeroot 
    /djangoroot 
    wsgi.py 
    urls.py 
    ... 
    /anapp 
     urls.py 
     ... 
     /tests 
     test_functional.py 

wsgi.py (порожденный версии GAE о django-admin.py django1.5):

import os 

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "djangoroot.settings") 
from django.core.wsgi import get_wsgi_application 
application = get_wsgi_application() 

test_functional.py:

import unittest 
import webtest 
from djangoroot.wsgi import application 

class TestHomePage(unittest.TestCase): 
    def setUp(self): 
     self.testapp = webtest.TestApp(application) 

    def test_get_method_ok(self): 
     response = self.testapp.get('/path') 
     self.assertEqual(response.status_int, 200, response) 

failin г тестовое сообщение:

Traceback (most recent call last): 
... 
line 14, in test_get_method_ok 
self.assertEqual(response.status_int, 200, response) 
AssertionError: Response: 301 MOVED PERMANENTLY 
Content-Type: text/html; charset=utf-8 
Location: http://localhost:80/path/ 

Почему бросает код перенаправления на тот же путь, единственное, что я могу думать о том, что какой-то код Джанго отвечает за перенаправление, потому что, как вы можете видеть из дерева каталогов I имеют двухуровневую конфигурацию URL.

С другой стороны, почему используется порт 80? когда я тестирую его в браузере, он показывает порт 8080, и он не должен использовать порт вообще с WebTest, он не должен использовать порт вообще, так как он правильно тестирует интерфейс WSGI.

Верхний уровень urls.py

from django.conf.urls import patterns, include, url 
urlpatterns = patterns('', 
    url(r'^path/', include('djangoroot.anapp.urls')), 
) 

App уровень urls.py

from django.conf.urls import patterns, url 
urlpatterns = patterns('djangoroot.anapp.views', 
    url(r'^$', 'home', name='anapp_home'), 
) 

браузер показывает страницу Corret на том же URL, я взял WebTest пример из страниц поддержки Google, так проблема должна заключаться в объединении GAE/Django.

Заранее благодарю вас и дайте мне знать, если вам нужна дополнительная информация.

ответ

1

Проблема, кажется, на функции django.conf.urls.url, поскольку я проверил файл корневой urls.py и он работал для корневого пути /, без перенаправления, но он перенаправляется меня с пути, кроме корня, я не мог найти ничего, что казалось, перенаправлял мои URL-адреса на исходные файлы Django.

я нашел альтернативу по документации Webtest:

resp = self.testapp.get('/path') 
resp = resp.maybe_follow() 

с помощью метода maybe_follow вы в конечном итоге получить последнюю страницу.

Редактировать

Наконец я нашел проблему в этой строке:

response = self.testapp.get('/path') 

заменить его следующим образом:

response = self.testapp.get('/path/') 

Похоже Django перенаправляет URLs на пути Проппер с / в конце.

+0

Aha! Трейлинг '/'. Спасибо! – ninjaPixel

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