我在我的Google App Engine應用程序中使用了blobstore,並且在生產服務器和開發服務器上一切工作正常。與測試平臺和webtest,但是,不能正常工作測試...GAE:使用測試平臺和webtest測試blob的下載
在我的測試中,BLOB存在,我可以這樣訪問:
blob = self.blobstore_stub.storage._blobs[key]
當我嘗試下載一個blob在我這樣
response = self.app.get("/blob-download/2")
我Blob存儲下載的處理程序測試不會被調用,我得到一個404錯誤(但鏈接的作品的開發或督促服務器上)。
我懷疑這是用測試臺或WebTest的...
任何想法的錯誤是什麼我可能是做錯了,或者這是與試驗檯/ 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),
]
嗨舒佩,感謝您的答覆。我不認爲這是問題,但我更新了有關app.yaml和main.py的更多細節。 – 2012-02-16 01:40:40
@schuppe如何在app.yaml中定義某些東西而不將它映射到main.application中的處理程序?您可以將所有內容發送到main.application,但該映射必須是更具體的映射。 – aschmid00 2012-02-16 13:58:03
@ aschmid00我想檢查Jeff是否在應用程序中定義了不同的處理程序。yaml在main.application找到之前處理'/ blob-download /'的請求。在app.yaml中定義的模式按它們出現的順序進行評估。他會有一個處理程序定義的東西是匹配'/ blob-download /',然後纔可能捕獲所有的'*' - 主要它是一個簡單的解釋。但與傑夫的更新,它看起來像不是這樣.. – schuppe 2012-02-16 16:58:01