GAE: тестирование загрузки блобов с помощью testbed и webtest

Я использую blobstore с моим приложением Google App Engine, и все работает нормально на рабочем сервере и сервере разработки. Тестирование с помощью testbed и webtest, однако, не работает...

В моих тестах блоб существует, и я могу получить к нему доступ следующим образом:

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

Когда я пытаюсь загрузить блоб в моих тестах следующим образом

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

мой обработчик загрузки 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

Вот соответствующая часть app.yaml:

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

Вот соответствующая часть main.py:

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

5
задан gaefan 18 February 2012 в 05:02
поделиться