Използвам 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),
]