Python 应用程序发动机单元测试(带前端测试)gae问题
我一直在使用Python 应用程序发动机单元测试(带前端测试)gae问题,python,unit-testing,google-app-engine,nosetests,Python,Unit Testing,Google App Engine,Nosetests,我一直在使用nosetests和withgae插件对我的应用程序进行单元测试 但是,我已经用decorator包装了许多get/post处理程序,这些decorator检查数据存储中的某些项,并将它们放在os.environ中,以便在处理程序中使用 所以我可能会有一个装饰师做一些类似的事情: os.environ["user"] = User() 其中User()是一个ndb.Model实例。但是,当我运行nosetests时,这将始终失败,并将给我一个错误,如: os.environ["us
nosetests
和withgae
插件对我的应用程序进行单元测试
但是,我已经用decorator包装了许多get/post处理程序,这些decorator检查数据存储中的某些项,并将它们放在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
我在这里有一个类似的线索:
有人告诉我,AppEngine实际上并没有在操作系统模块中调用getenv/putenv
这个错误是因为在Python的普通os
模块中,除了字符串之外,您不能在os中插入任何内容。environ
和NoTests
显然正在使用常规的Pythonos
模块
但是,应用程序引擎使用request\u environment.py
来处理os.environment
调用
我如何缓解这种情况,使nosetests能够在
os.environ
调用中正常工作?另一种方法是使用db存根(https://developers.google.com/appengine/docs/python/tools/localunittesting)在测试之前将所需的实体放在上面。我为可能遇到此问题的任何其他人找到了解决方案:在运行测试之前,在google.appengine.api.runtime
中调用PatchOsEnviron