在将gae会话添加到相对成熟的GAE应用程序时,我遇到了一些问题.我仔细阅读了自述文件,并观看了演示.
首先,仅在将gaesesions目录添加到我的应用程序时,使用鼻子和鼻子-gae运行测试时会导致以下错误:
Exception ImportError: 'No module named threading' in <bound method local.__del__ of <_threading_local.local object at 0x103e10628>> ignored
所有测试都运行良好,因此不是一个大问题,但表明存在某些问题.
接下来,如果我添加以下两行代码:
from gaesessions import get_current_session
session = get_current_session()
并运行测试,然后出现以下错误:
Traceback (most recent call last):
File "/Users/.../unit_tests.py", line 1421, in testParseFBRequest
data = tasks.parse_fb_request(sr)
File "/Users/.../tasks.py", line 220, in parse_fb_request
session = get_current_session()
File "/Users/.../gaesessions/__init__.py", line 36, in get_current_session
return _tls.current_session
File "/Library/.../python2.7/_threading_local.py", line 193, in __getattribute__
return object.__getattribute__(self, name)
AttributeError: 'local' object has no attribute 'current_session'
在开发服务器上不会发生此错误.
任何解决上述问题的建议将不胜感激.
解决方法:
我遇到了同样的问题.问题似乎是gae测试平台的行为与开发服务器的行为不同.我不知道具体细节,但最终通过添加解决了
def setUp(self):
testbed.Testbed().activate()
# after activating the testbed:
from gaesessions import Session, set_current_session
set_current_session(Session())