我一直在使用nosetests
和with-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.environ
和nosetests
。
但是,App Engine使用request_environment.py
來處理os.environ
調用。
我該如何緩解這種情況,鼻子測試會與os.environ
調用行爲?