我正在尝试使用 python unittest 框架在 Google App Engine 中设置一系列 Django 模板的单元测试。
该应用程序使用 python 2.7、webapp2、Django 1.2,并且已经使用 unittest 来测试非 Django 功能。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 使用显式路径,但没有改变。
有任何想法吗?