2012-09-13 25 views
0

我一直在使用nosetestswith-gae插件單元測試我的應用程序。App Engine單元測試用nosetests gae問題

但是,我用裝飾器包裝了許多get/post處理程序,它們檢查數據存儲庫中的某些項目,並將它們放在os.environ中以便在處理程序中使用。

所以我可能有一個裝飾,做一樣的東西:

os.environ["user"] = User() 

其中User()是一個ndb.Model實例。然而,當我運行nosetests,這總是會失敗,並給我一個錯誤,如:

os.environ["user"] = user 
File "C:\Python27\lib\os.py", line 420, in __setitem__ 
    putenv(key, item) 
TypeError: must be string, not User 

我也有類似的主題在這裏:

https://groups.google.com/forum/?fromgroups=#!topic/google-appengine/1KR7UIPHoQM

有人告訴我,App Engine不實際上在OS模塊中調用getenv/putenv。

的錯誤是因爲在Python的正常os模塊,你不能明顯地使用常規的Python os模塊插入任何東西,但串入os.environnosetests

但是,App Engine使用request_environment.py來處理os.environ調用。

我該如何緩解這種情況,鼻子測試會與os.environ調用行爲?

回答

1

另一種方法是使用db stub(https://developers.google.com/appengine/docs/python/tools/localunittesting)在測試之前將所需的實體放在上面。

0

我發現了可能遇到此問題的其他人的解決方案:在運行測試之前,請致電PatchOsEnvirongoogle.appengine.api.runtime

相關問題