0

Python unittest フレームワークを使用して、Google App Engine で一連の Django テンプレートの単体テストを設定しようとしています。

アプリは python 2.7、webapp2、Django 1.2 を使用し、Django 以外の機能をテストするために既に unittest を使用しています。Django テンプレートは、開発環境およびライブ環境でサーバーを介して問題なく提供されます。

unittest フレームワークを介してページ呼び出しを実行すると、次のエラーが発生します。

  File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/lib/django_1_2/django/template/loader.py", line 138, in find_template
  raise TemplateDoesNotExist(name)
  TemplateDoesNotExist: site/index.html

設定.py:

import os

PROJECT_ROOT = os.path.dirname(__file__)

TEMPLATE_DIRS = (
    os.path.join(PROJECT_ROOT, "templates"),
)

単体テスト呼び出し:

import webapp2
import unittest
import os

os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'

from google.appengine.dist import use_library
use_library('django', '1.2')

import main

class test_main(unittest.TestCase):

    def test_default_page(self):

        request = webapp2.Request.blank('/')

        response = request.get_response(main.app)

        self.assertEqual(response.status_int, 200)

テスト ファイル内で DJANGO_SETTINGS_MODULE と Django のバージョンを指定する必要があることがわかりましたが、これらは通常 app.yaml で指定されます。

ページ ハンドラー:

from django.template.loaders.filesystem import Loader
from django.template.loader import render_to_string

class default(webapp2.RequestHandler):

    def get(self):

        self.response.out.write(render_to_string('site/index.html'))

index.html からすべてを削除しようとしましたが、それでも同じエラーが発生します。

TEMPLATE_DIRS の明示的なパスを使用してみましたが、変更はありません。

何か案は?

4

1 に答える 1

1

これがdjango設定のどこかに設定されているかどうかを確認します。

TEMPLATE_LOADERS=('django.template.loaders.filesystem.load_template_source',)
于 2012-07-19T00:32:21.777 に答える