GAE/PでDjangoのテストクライアントを使う方法

Djangoのテストクライアント(django.test.client.Client)は、Google App Engine(Python)にて実装したアプリケーションにも適用できることがわかりました。以下のようにしてできます。

import unittest
import getopt
import logging
import os
import signal
import sys
import traceback
import tempfile
os.environ[u'DJANGO_SETTINGS_MODULE'] = u'settings'
DIR_PATH = "/path/to/gae"
APP_PATH = "/path/to/app"
EXTRA_PATHS = [
  DIR_PATH,
  APP_PATH,
  os.path.join(DIR_PATH, ‘lib', ‘antlr3'),
  os.path.join(DIR_PATH, ‘lib', ‘django'),
  os.path.join(DIR_PATH, ‘lib', ‘fancy_urllib'),
  os.path.join(DIR_PATH, ‘lib', ‘ipaddr'),
  os.path.join(DIR_PATH, ‘lib', ‘webob'),
  os.path.join(DIR_PATH, ‘lib', ‘yaml', ‘lib'),
]
sys.path = EXTRA_PATHS + sys.path
from google.appengine.api import yaml_errors
from google.appengine.dist import py_zipimport
from google.appengine.tools import appcfg
from google.appengine.tools import appengine_rpc
from google.appengine.tools import dev_appserver
from google.appengine.tools import dev_appserver_main
from google.appengine.dist import use_library
use_library(‘django', ‘1.2')
from django.conf import settings
settings._target = None
option_dict = dev_appserver_main.DEFAULT_ARGS.copy()
option_dict[‘APP_PATH'] = os.path.realpath(APP_PATH)
logging.getLogger().setLevel(logging.DEBUG)
config = None
config, matcher = dev_appserver.LoadAppConfig(APP_PATH, {})
dev_appserver.SetupStubs(config.application, **option_dict)
from django.test import client
from django.test import utils
c = client.Client()
utils.setup_test_environment()
response = c.get("/test/")
print("STATUS_CODE: " + str(response.status_code))
print("CONTENT: " + response.content)
print("TEMPLATE: " + str(response.template.name))
print("CONTEXT: " + str(response.context))

この記事が役に立った場合、シェアしていただけると励みになります!!