Python googleappengine上的集成测试

Python googleappengine上的集成测试,python,google-app-engine,flask,automated-tests,Python,Google App Engine,Flask,Automated Tests,我编写了一个Flask应用程序,并将其托管在Google App Engine上 如何在Flask中运行集成测试,类似于本文中提到的处理程序测试 本质上,我想在将应用程序部署到谷歌应用程序引擎之前,验证页面列表(位于蓝图中)是否加载了200响应代码 我的main.py看起来像 """ main.py is the top level script. Return Index.html at the root. """ import gdata.youtube import gdata.yo

我编写了一个Flask应用程序,并将其托管在Google App Engine上

如何在Flask中运行集成测试,类似于本文中提到的处理程序测试

本质上,我想在将应用程序部署到谷歌应用程序引擎之前,验证页面列表(位于蓝图中)是否加载了200响应代码

我的main.py看起来像

""" main.py is the top level script.

Return Index.html at the root. 
"""

import gdata.youtube
import gdata.youtube.service
import random
import string
import logging

import sys
import json

from google.appengine.ext import ereporter

ereporter.register_logger()
reload(sys)
sys.setdefaultencoding("utf-8")

# sys.path includes 'server/lib' due to appengine_config.py
from flask import Flask
from flask import render_template, request, session, abort
from Routes.BelieveRoutes import believe_routes
from Routes.SermonRoutes import sermon_routes
from Routes.ErrorRoutes import error_routes
from Routes.HomeRoutes import home_routes
from Routes.BookRoutes import book_routes
from Routes.ArticlesRoutes import articles_routes
from Routes.SearchRoutes import search_routes
from Routes.EndPointRoutes import endpoint_routes
from Routes.TestRoutes import test_routes
from Routes.ConferenceRoutes import conference_routes


app = Flask(__name__.split('.')[0])


app.register_blueprint(believe_routes)
app.register_blueprint(sermon_routes)
app.register_blueprint(error_routes)
app.register_blueprint(home_routes)
app.register_blueprint(book_routes)
app.register_blueprint(articles_routes)
app.register_blueprint(search_routes)
app.register_blueprint(endpoint_routes)
app.register_blueprint(test_routes)
app.register_blueprint(conference_routes)


@app.route('/')
@app.route('/index')
def index():
    return render_template('index.html')


@app.errorhandler(500)
def internal_server_error(e):
    return render_template('errorpages/500.html'), 500

下面是一个简单的例子,我为我的一个基于and的处理程序拼凑在一起

第一个我的处理程序(位于
handlers/api.py
,但与您的
main.py
处理程序相比):

现在是一个简单的集成测试:

# tests/handlers/test_api.py
import unittest
import json

from google.appengine.api import memcache
from google.appengine.ext import ndb
from google.appengine.ext import testbed

from handlers import api


class ApiHandlerTest(unittest.TestCase):

    def setUp(self):
        self.testbed = testbed.Testbed()
        self.testbed.activate()
        self.testbed.init_datastore_v3_stub()
        self.testbed.init_memcache_stub()
        self.app = api.app.test_client()
        ndb.get_context().clear_cache()

    def tearDown(self):
        self.testbed.deactivate()

    def testPing(self):
        response = self.app.get('/api/v1.0/ping')
        self.assertEqual(response.status_code, 200)

        json_data = json.loads(response.data)
        self.assertEqual(json_data['ping'], 'pong')
我可以从命令行运行测试,如下所示:

python tests/test.py ~/google-cloud-sdk/platform/google_appengine/

该文件随附。

下面是一个简单的示例,我根据and为我的一个处理程序修补了这个示例

第一个我的处理程序(位于
handlers/api.py
,但与您的
main.py
处理程序相比):

现在是一个简单的集成测试:

# tests/handlers/test_api.py
import unittest
import json

from google.appengine.api import memcache
from google.appengine.ext import ndb
from google.appengine.ext import testbed

from handlers import api


class ApiHandlerTest(unittest.TestCase):

    def setUp(self):
        self.testbed = testbed.Testbed()
        self.testbed.activate()
        self.testbed.init_datastore_v3_stub()
        self.testbed.init_memcache_stub()
        self.app = api.app.test_client()
        ndb.get_context().clear_cache()

    def tearDown(self):
        self.testbed.deactivate()

    def testPing(self):
        response = self.app.get('/api/v1.0/ping')
        self.assertEqual(response.status_code, 200)

        json_data = json.loads(response.data)
        self.assertEqual(json_data['ping'], 'pong')
我可以从命令行运行测试,如下所示:

python tests/test.py ~/google-cloud-sdk/platform/google_appengine/

该文件随附。

下面是一个简单的示例,我根据and为我的一个处理程序修补了这个示例

第一个我的处理程序(位于
handlers/api.py
,但与您的
main.py
处理程序相比):

现在是一个简单的集成测试:

# tests/handlers/test_api.py
import unittest
import json

from google.appengine.api import memcache
from google.appengine.ext import ndb
from google.appengine.ext import testbed

from handlers import api


class ApiHandlerTest(unittest.TestCase):

    def setUp(self):
        self.testbed = testbed.Testbed()
        self.testbed.activate()
        self.testbed.init_datastore_v3_stub()
        self.testbed.init_memcache_stub()
        self.app = api.app.test_client()
        ndb.get_context().clear_cache()

    def tearDown(self):
        self.testbed.deactivate()

    def testPing(self):
        response = self.app.get('/api/v1.0/ping')
        self.assertEqual(response.status_code, 200)

        json_data = json.loads(response.data)
        self.assertEqual(json_data['ping'], 'pong')
我可以从命令行运行测试,如下所示:

python tests/test.py ~/google-cloud-sdk/platform/google_appengine/

该文件随附。

下面是一个简单的示例,我根据and为我的一个处理程序修补了这个示例

第一个我的处理程序(位于
handlers/api.py
,但与您的
main.py
处理程序相比):

现在是一个简单的集成测试:

# tests/handlers/test_api.py
import unittest
import json

from google.appengine.api import memcache
from google.appengine.ext import ndb
from google.appengine.ext import testbed

from handlers import api


class ApiHandlerTest(unittest.TestCase):

    def setUp(self):
        self.testbed = testbed.Testbed()
        self.testbed.activate()
        self.testbed.init_datastore_v3_stub()
        self.testbed.init_memcache_stub()
        self.app = api.app.test_client()
        ndb.get_context().clear_cache()

    def tearDown(self):
        self.testbed.deactivate()

    def testPing(self):
        response = self.app.get('/api/v1.0/ping')
        self.assertEqual(response.status_code, 200)

        json_data = json.loads(response.data)
        self.assertEqual(json_data['ping'], 'pong')
我可以从命令行运行测试,如下所示:

python tests/test.py ~/google-cloud-sdk/platform/google_appengine/
该文件包含在中