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