【发布时间】:2012-09-13 03:14:11
【问题描述】:
我一直在使用 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/1KR7UIPHoQM
有人告诉我 App Engine 实际上并没有在 os 模块中调用 getenv/putenv。
该错误是因为在 Python 的普通 os 模块中,除了字符串之外,您无法将任何内容插入到 os.environ 中,而 nosetests 显然正在使用常规 Python os 模块。
但是,App Engine 使用 request_environment.py 来处理 os.environ 调用。
我怎样才能缓解这种情况,以便鼻子测试将在 os.environ 调用中运行?
【问题讨论】:
标签: python unit-testing google-app-engine nosetests