我一直在使用插件对我的应用程序进行单元nosetests
测试with-gae
。
然而,我已经用装饰器包装了我的许多 get/post 处理程序,这些装饰器检查数据存储中的某些项目并将它们放入 os.environ 以供处理程序使用。
所以我可能有一个装饰器,它可以做类似的事情:
os.environ["user"] = User()
其中 User() 是一个 ndb.Model 实例。但是,当我运行鼻子测试时,这总是会失败并且会给我一个错误,例如:
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/1KR7UIHoQM
有人告诉我 App Engine 实际上并没有在 os 模块中调用 getenv/putenv。
该错误是因为在 Python 的普通os
模块中,除了字符串之外,您不能插入任何内容,os.environ
并且显然nosetests
正在使用常规 Pythonos
模块。
但是,App Engine 用于request_environment.py
处理os.environ
调用。
我怎样才能减轻这种情况,以便鼻子测试会在os.environ
通话中表现出来?