0
我正在嘗試使用python unittest框架在Google App Engine中設置一系列Django模板的單元測試。單元測試Google App Engine中的Django模板引發了TemplateDoesNotExist(name)
該應用程序使用python 2.7,webapp2,Django 1.2,並且已經使用unittest來測試沒有Django功能。 Django模板在dev和live環境中不存在通過服務器提供的問題。
執行通過單元測試框架的頁面調用如果出現以下錯誤引發:
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
Settings.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版本,即使這些ar Ë通過正常的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的顯式路徑,但沒有改變。
任何想法?
我曾嘗試加入TEMPLATE_LOADERS變量的settings.py,但它並沒有區別(相同的錯誤上面,並沒有什麼區別正常應用程序的服務),並假設從主要處理程序中的django進口服務達到相同的目的。 – notreadbyhumans 2012-07-19 19:02:55