GAE:使用testbed和webtes测试blob的下载

2024-03-28 15:47:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我在googleappengine应用程序中使用blobstore,在生产服务器和开发服务器上一切正常。然而,用testbed和webtest进行测试是行不通的。。。在

在我的测试中,blob的存在是因为我可以这样访问它:

blob = self.blobstore_stub.storage._blobs[key]

当我试图在我的测试中下载一个blob时

^{pr2}$

我的blobstore下载处理程序从未被调用,我得到了404错误(但是链接在dev或prod服务器上有效)。在

我怀疑这是testbed或webtest的错误。。。在

关于我可能做错了什么,或者如果这是testbed/webtest的一个错误,有什么好办法可以让我测试代码的这一部分?在


这里有一些关于我如何设置测试的信息。在

import unittest
from webtest import TestApp
from google.appengine.ext import db, testbed
from google.appengine.api import users
from google.appengine.api import apiproxy_stub_map

class ExampleTests(unittest.TestCase):

    def setUp(self):
        self.testbed = testbed.Testbed()
        self.testbed.setup_env(app_id="stv")
        self.testbed.activate()
        self.testbed.init_datastore_v3_stub()
        self.testbed.init_taskqueue_stub()
        self.testbed.init_mail_stub()
        self.testbed.init_blobstore_stub()
        self.app = TestApp(main.application)
        apiproxy_stub_map.apiproxy.GetStub("datastore_v3").Clear()
        self.taskqueue_stub = apiproxy_stub_map.apiproxy.GetStub('taskqueue')
        self.mail_stub = apiproxy_stub_map.apiproxy.GetStub('mail')
        self.blobstore_stub = apiproxy_stub_map.apiproxy.GetStub('blobstore')

   def testBlob(self):
        # create blob using files.blobstore.create
        response = self.app.get("/blob-download/2") # This returns 404
        self.assertEqual(response.body, "content of blob") # This fails

这是应用程序yaml公司名称:

handlers:
- url: /.*
  script: main.application

这是主.py公司名称:

application = webapp2.WSGIApplication(
    [
     ('/blob-download/([^/]+)?', views.BlobDownload),
    ]

Tags: fromimportself服务器mapinit错误google
1条回答
网友
1楼 · 发布于 2024-03-28 15:47:55

如果没有路由,很难判断路由主应用程序以及应用程序yaml可用。在

我怀疑您在中配置了“/blob download”应用程序yaml其中webtest不知道,它只知道您在中配置的路由主应用程序. 在

更新:现在我们应用程序yaml不是原因,我们继续吧。看看你的处理者会有帮助的。Blobstore服务响应的处理方式与通常的响应不同。作为开发人员,您可以将blob键作为头添加到响应中。appengine后端检查这个头端,如果它发现它接管了blob的服务。您可以在此处查看dev_appserver实现: http://code.google.com/p/googleappengine/source/browse/trunk/python/google/appengine/tools/dev_appserver_blobstore.py#214。在

这意味着您不能在没有dev_appserver或appserver处理请求的情况下测试blob的服务-这意味着testbed+webtest在这里帮不了你(但它不能解释404)。在

您可以运行完整的端到端测试,例如使用gaedriver:http://code.google.com/p/gaedriver/

相关问题 更多 >