私は GAE/Django プロジェクトを持っており、機能テスト環境を 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)
失敗したテスト メッセージ:
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/
なぜ同じパスにリダイレクト コードをスローするのか、私が考えることができる唯一のことは、ディレクトリ ツリーからわかるように、2 レベルの URL 構成があるため、django の一部のコードがリダイレクトを担当しているということです。
反対側では、なぜポート 80 を使用しているのですか? ブラウザでテストすると、8080ポートが表示されWebTest
ます.WSGIインターフェイスをテストしているため、ポートをまったく使用しないはずなので、ポートをまったく使用しないでください.
トップレベルの urls.py
from django.conf.urls import patterns, include, url
urlpatterns = patterns('',
url(r'^path/', include('djangoroot.anapp.urls')),
)
アプリ レベルの urls.py
from django.conf.urls import patterns, url
urlpatterns = patterns('djangoroot.anapp.views',
url(r'^$', 'home', name='anapp_home'),
)
ブラウザは同じ URL に正しいページを表示します。Google のサポート ページから WebTest の例を取得したので、問題は GAE/Django の相互運用性にあるはずです。
事前に感謝します。さらに情報が必要な場合はお知らせください。