0

私は 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 の相互運用性にあるはずです。

事前に感謝します。さらに情報が必要な場合はお知らせください。

4

1 に答える 1