gpt4 book ai didi

python - GAE : testing download of blobs with testbed and webtest

转载 作者:太空狗 更新时间:2023-10-30 01:23:45 25 4
gpt4 key购买 nike

我将 blobstore 与我的 Google App Engine 应用程序一起使用,并且在生产服务器和开发服务器上一切正常。使用 testbed 和 webtest 进行测试,但是,不起作用...

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

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

当我尝试像这样在我的测试中下载 blob 时

response = self.app.get("/blob-download/2")

我的 blobstore 下载处理程序从未被调用,我收到 404 错误(但链接在开发或生产服务器上有效)。

我怀疑这是 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

这是 app.yaml 的相关部分:

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

这是 main.py 的相关部分:

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

最佳答案

如果没有来自 main.application 和 app.yaml 的路由,很难说出路由。

我怀疑您在 app.yaml 中配置了“/blob-download”,而 webtest 并不知道,它只知道您在 main.application 中配置的路由。

更新:既然我们现在 app.yaml 不是原因,让我们继续。有什么帮助是看到你的处理程序。 Blobstore 服务响应的处理方式与通常的响应不同。作为开发人员,您将 blob 键作为 header 添加到响应中。 App Engine 后端会检查此 header 端,如果发现它会接管 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/

关于python - GAE : testing download of blobs with testbed and webtest,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9303019/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com