Я использую blobstore с моим приложением Google App Engine, и все отлично работает на рабочем сервере и сервере разработки.Однако тестирование с помощью тестового стенда и webtest не работает ...
В моих тестах существует блоб, так как я могу получить к нему доступ следующим образом:
blob = self.blobstore_stub.storage._blobs[key]
Когда я пытаюсь загрузить BLOB-объект в моих тестах, как этот
response = self.app.get("/blob-download/2")
, мой обработчик загрузки blobstore никогда не вызывается, и я получаю ошибку 404 (но ссылка работает на серверах dev или prod).
Я подозреваю, что это ошибка на тестовом стенде или веб-тесте ...
Любые идеи относительно того, что я могу делать неправильно, или, если это ошибка на тестовом стенде / веб-тесте, может показаться хорошей работой?чтобы я мог проверить эту часть своего кода?
Вот некоторая информация о том, как я настраиваю свои тесты.
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),
]