Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 应用程序发动机单元测试(带前端测试)gae问题_Python_Unit Testing_Google App Engine_Nosetests - Fatal编程技术网

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
显然正在使用常规的Python
os
模块

但是,应用程序引擎使用
request\u environment.py
来处理
os.environment
调用


我如何缓解这种情况,使nosetests能够在
os.environ
调用中正常工作?

另一种方法是使用db存根(https://developers.google.com/appengine/docs/python/tools/localunittesting)在测试之前将所需的实体放在上面。

我为可能遇到此问题的任何其他人找到了解决方案:在运行测试之前,在
google.appengine.api.runtime
中调用
PatchOsEnviron