2012-07-18 48 views
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的顯式路徑,但沒有改變。

任何想法?

回答

1

檢查,如果這是在任何地方設置你的Django配置:

TEMPLATE_LOADERS=('django.template.loaders.filesystem.load_template_source',) 
+0

我曾嘗試加入TEMPLATE_LOADERS變量的settings.py,但它並沒有區別(相同的錯誤上面,並沒有什麼區別正常應用程序的服務),並假設從主要處理程序中的django進口服務達到相同的目的。 – notreadbyhumans 2012-07-19 19:02:55

相關問題