2012-06-07 113 views
2

我將圖像上傳到GAE中使用create_upload_url如何模擬圖像上傳到Google App Engine的Blob存儲

uploadURL = blobstore.create_upload_url('/upload') 

BLOBSTORE爲單位的測試GAE代碼的目的,你可以模擬圖像上傳?或者是否應該將圖像數據插入我的測試平臺並假定上傳成功?如果是這樣,你如何將圖像上傳到測試平臺?

回答

0

你能提供一些關於你的測試的代碼嗎?

我認爲你應該能夠使用webapp2僞造對upload_url的請求。有關如何僞造請求的示例代碼,請看看here

另一方面,你應該考慮你的測試的目的是什麼。上傳完成後,您的目的是測試圖片上傳的工作原理還是代碼的工作原理?

運行單元測試時,嘗試將依賴關係分解到其他庫,以便僅測試您自己的代碼。然後添加一套新的實施測試,即提出請求和網址,並檢查您是否得到預期的響應。與上例中的test_redirect_if_no_session一樣,向需要用戶的頁面發出請求並期待重定向(http響應代碼302)。

..fredrik

+0

謝謝。看起來我需要編寫兩個測試:i)檢查upload_url正常運行的測試; ii)將圖像插入blobstore以測試我的GAE程序的其他方面。據推測,我可以適應這種方法http://stackoverflow.com/questions/10870968/how-to-simulate-file-upload-to-blobstore-using-gae-dev-server-testbed-for-pytho但我不是100%確定如何適應圖像數據...? – Andrew

1

同意就正是你正在測試有@fredrik。無論如何,如果您正在進行一些功能/黑盒/類似測試,您可以簡單地使用Webtest framework(請參閱post方法),並進行實際上傳,例如,使用Webtest framework(請參閱post方法)。

payload = [(fieldname, filename)] 
test_app.post(uploadURL, upload_files=payload) 

有關如何初始化上述test_app的詳細信息,請參閱Handler Testing for Python

+0

嗨,亞歷克斯,你是對的。實際上,我的目標是兩個方面:i)確認圖像上傳工作,以及ii)創建測試對象來測試我的GAE程序的其他方面。使用上面的示例,您將如何生成代表blob內容類型image/jpeg的有效內容數據? – Andrew

+0

如果我正確理解你的問題...''fieldname'是什麼在你的

... 。 'filename'就像是「tests/payloads/testimage.jpg」 – alex

+0

'filename'是我不完全明白的。我在使用GAEUnit的服務器上運行此測試。 testimage.jpg是否即時生成?或以前存儲在服務器上?或其他? – Andrew

相關問題