简单通道API相关测试失败,1.8.2升级

时间:2013-07-26 18:30:01

标签: python google-app-engine channel-api

自从升级到Google App Engine SDK 1.8.2版本以来,我们一直遇到与Channel API相关的单元测试问题。

这是瘦的。

我们有一个处理程序,可以创建一个频道并返回频道ID和频道令牌。该处理程序看起来像:

import json
from uuid import uuid4
from google.appengine.api.channel import channel
import webapp2


class ChannelSubscriptionHandler(webapp2.RequestHandler):

    def get(self):
        self.response.headers['Context-Type'] = 'application/json'

        channel_id = str(uuid4())
        token = channel.create_channel(channel_id)

        self.response.write(json.dumps({
            'channel_id': channel_id,
            'token': token
        }))

app = webapp2.WSGIApplication([
    ('/channel_subscription/', ChannelSubscriptionHandler)
], debug=True)

没有什么可疯狂的,只是创建一个频道并返回细节。

然后我们有一个单元测试练习处理程序代码,如下所示:

import json
from unittest import TestCase
from google.appengine.api.channel import channel
from google.appengine.ext.testbed import Testbed
from webtest import TestApp
import example_channel_api_handler


class ChannelSubscriptionHandlerTests(TestCase):

    def setUp(self):
        self.testbed = Testbed()
        self.testbed.activate()
        self.testbed.init_channel_stub()

        self.channel_stub = self.testbed.get_stub('channel')

        self.app = TestApp(example_channel_api_handler.app)

    def test_can_get_channel_subscription(self):

        response = self.app.get('/channel_subscription/', status=200)

        data = json.loads(response.body)

        token = data.get('token', None)
        channel_id = data.get('channel_id', None)

        self.assertIsNotNone(token)
        self.assertIsNotNone(channel_id)

        self.channel_stub.connect_channel(token)

        channel.send_message(channel_id, 'Hello World')

        self.assertEquals(['Hello World'], self.channel_stub.get_channel_messages(token))

就像我上面所说的那样,直到GAE SDK的1.8.2版本,上面的测试就像一个魅力。我扫描了最新版本的发行说明,并确实看到了一些与Channel API相关的内容,但它看起来并不适用于我所拥有的问题。

此外,上面的代码并非真正来自我正在处理的应用程序,但它复制了我所描述的问题。

最后,似乎应用程序在生产中没有被破坏,就像这个问题围绕着Channel API的测试平台一样。

感谢阅读。

1 个答案:

答案 0 :(得分:0)

我在Google App Engine SDK问题跟踪器上将此问题记录为问题。

我记录的问题在原始评论中提到。

此问题已被接受,并计划在Google App Engine SDK的下一个(1.8.3)版本中修复。

感谢阅读。