gae-sessions和nose的错误

时间:2012-10-07 15:34:47

标签: python google-app-engine nose gae-sessions

我在向相对成熟的GAE应用添加gae-sessions时遇到了一些问题。我仔细阅读了自述文件并查看了演示。

首先,只是将gaesesions目录添加到我的应用程序会导致运行带有nose和nose-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'

在开发服务器上不会发生此错误。

任何有关修复上述内容的建议都将不胜感激。

1 个答案:

答案 0 :(得分:3)

我遇到了同样的问题。问题似乎是gae测试平台的行为与开发服务器不同。我不知道具体细节,但最后通过添加

来解决它
def setUp(self):
  testbed.Testbed().activate()
  # after activating the testbed:
  from gaesessions import Session, set_current_session
  set_current_session(Session())