0

我在为我的应用引擎补丁解决方案编写单元测试时遇到了很多麻烦。

我已经在专家交流(http://www.experts-exchange.com/Programming/Languages/Scripting/Python/Q_26509115.html)上问过这个问题,但它已经存在了两个星期没有答案 - 希望 SO 工作人员可以改进一下!!

我已经尝试了我在互联网上找到的所有内容,我当前的设置是使用nose-aep,但我也尝试了标准单元测试框架,但它给出了几乎相同的问题(问题似乎是应用程序引擎补丁,但目前尚不清楚如何解决它)。

使用最简单的测试:

def test():

    #pass
    assert False

通过和失败都按预期运行,但我得到了一个不影响结果的异常:

Exception exceptions.AttributeError: "'NoneType' object has no attribute 'print_exc'" in <bound method Signal._remove_receiver of <django.dispatch.dispatcher.Signal object at 0x22da290>> ignored

一旦我导入模型或引用模型的任何其他文件,例如

from application.models import * 

我收到一个错误,提示应用引擎补丁设置不正确。我在下面包含了日志输出。

任何帮助表示赞赏!

使用nose-aep时,错误是:

/System/Library/Frameworks/Python.framework/Versions/2.5/bin/python2.5 /Applications/PyCharm-96.1063.app/helpers/pydev/pydevd.py --client 127.0.0.1 --port 61552 --file /usr/local/bin/nosetests-script.py --with-gae --without-sandbox -w tests/
Connected to pydevd (version 1.1)
pydev debugger: warning: psyco not available for speedups (the debugger will still work correctly, but a bit slower)
pydev debugger: starting
nose.config: INFO: Set working dir to /Users/craigedmunds/Documents/Source/reciply/webapplication/trunk/tests
Running on app-engine-patch 1.1
Failure: AttributeError ('module' object has no attribute 'User') ... ERROR

======================================================================
ERROR: Failure: AttributeError ('module' object has no attribute 'User')
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/Library/Python/2.5/site-packages/nose-0.11.4-py2.5.egg/nose/loader.py", line 382, in loadTestsFromName
    addr.filename, addr.module)
  File "/Library/Python/2.5/site-packages/nose-0.11.4-py2.5.egg/nose/importer.py", line 39, in importFromPath
    return self.importFromDir(dir_path, fqname)
  File "/Library/Python/2.5/site-packages/nose-0.11.4-py2.5.egg/nose/importer.py", line 86, in importFromDir
    mod = load_module(part_fqname, fh, filename, desc)
  File "/Users/craigedmunds/Documents/Source/reciply/webapplication/trunk/tests/tests.py", line 5, in <module>
    from application.models import *
  File "/Users/craigedmunds/Documents/Source/reciply/webapplication/trunk/application/models.py", line 4, in <module>
    from ragendja.auth.hybrid_models import User
  File "/Users/craigedmunds/Documents/Source/reciply/webapplication/trunk/common/appenginepatch/ragendja/auth/hybrid_models.py", line 3, in <module>
    from ragendja.auth.google_models import GoogleUserTraits
  File "/Users/craigedmunds/Documents/Source/reciply/webapplication/trunk/common/appenginepatch/ragendja/auth/google_models.py", line 5, in <module>
    from ragendja.auth.models import EmailUserTraits
  File "/Users/craigedmunds/Documents/Source/reciply/webapplication/trunk/common/appenginepatch/ragendja/auth/models.py", line 1, in <module>
    from django.contrib.auth.models import *
  File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/dist/py_zipimport.py", line 213, in load_module
    exec code in mod.__dict__
  File "/Users/craigedmunds/Documents/source/reciply/webapplication/trunk/common/zip-packages/django-1.1.zip/django/contrib/auth/models.py", line 457, in <module>
    User = cache.app_models['auth']['user'] = module.User
AttributeError: 'module' object has no attribute 'User'
-------------------- >> begin captured logging << --------------------
root: WARNING: Can't open zipfile /Users/craigedmunds/Documents/source/reciply/webapplication/trunk/common/zip-packages/.DS_Store: BadZipfile: File is not a zip file
root: INFO: zipimporter('/Users/craigedmunds/Documents/source/reciply/webapplication/trunk/common/zip-packages/django-1.1.zip', '')
root: WARNING: Could not read datastore data from /var/folders/yb/yb1f3LPqE50UqVxSbqvYN++++TI/-Tmp-/django_reciply.datastore
root: WARNING: Could not initialize images API; you are likely missing the Python "PIL" module. ImportError: No module named _imaging
root: WARNING: Could not read datastore data from /var/folders/yb/yb1f3LPqE50UqVxSbqvYN++++TI/-Tmp-/nosegae.datastore
root: WARNING: Could not initialize images API; you are likely missing the Python "PIL" module. ImportError: No module named _imaging
--------------------- >> end captured logging << ---------------------

----------------------------------------------------------------------
Ran 1 test in 0.102s

FAILED (errors=1)
Exception exceptions.AttributeError: "'NoneType' object has no attribute 'print_exc'" in <bound method Signal._remove_receiver of <django.dispatch.dispatcher.Signal object at 0x23da290>> ignored

使用标准 python 单元测试框架时:

/System/Library/Frameworks/Python.framework/Versions/2.5/bin/python2.5 /Applications/PyCharm-97.8.app/helpers/pycharm/utrunner.py /Users/craigedmunds/Documents/source/reciply/webapplication/trunk/tests//
Testing started at 9:22 PM ...
Traceback (most recent call last):
  File "/Applications/PyCharm-97.8.app/helpers/pycharm/utrunner.py", line 58, in <module>
    modules = loadModulesFromFolderRec(a[0])
  File "/Applications/PyCharm-97.8.app/helpers/pycharm/utrunner.py", line 42, in loadModulesFromFolderRec
    os.path.walk(folder, walkModules, modules)
  File "/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/posixpath.py", line 290, in walk
    func(arg, top, names)
  File "/Applications/PyCharm-97.8.app/helpers/pycharm/utrunner.py", line 38, in walkModules
    modules.append(loadSource(os.path.join(dirname, name)))
  File "/Applications/PyCharm-97.8.app/helpers/pycharm/utrunner.py", line 31, in loadSource
    module = imp.load_source(moduleName, fileName)
  File "/Users/craigedmunds/Documents/source/reciply/webapplication/trunk/tests//tests.py", line 6, in <module>
    from application.models import *
  File "/Users/craigedmunds/Documents/Source/reciply/webapplication/trunk/application/models.py", line 4, in <module>
    from ragendja.auth.hybrid_models import User
ImportError: No module named ragendja.auth.hybrid_models

Process finished with exit code 1
Empty test suite.
4

1 回答 1

0

我没用过nose-aep。我们使用nosetestsgoogle-app-engine 插件。设置起来非常容易,基本上可以通过底部提供的链接进行设置。抱歉,我无法帮助您使用nose-aep. 祝你好运。

完整概述,包括如何安装: http ://www.cuberick.com/2008/11/unit-test-your-google-app-engine-models.html

使用示例:http: //farmdev.com/projects/nosegae/

鼻子测试的 GAE 插件: http ://code.google.com/p/nose-gae/

Nosetest 的插件站点,带有文档: http ://somethingaboutorange.com/mrl/projects/nose/1.0.0/

于 2011-02-01T03:49:46.210 回答