在googleappengine上使用appengine补丁时设置单元测试时出现问题

2024-06-16 11:57:07 发布

您现在位置:Python中文网/ 问答频道 /正文

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

我在专家交流会上问过这个问题(http://www.experts-exchange.com/Programming/Languages/Scripting/Python/Q_26509115.html)但它已经在那里呆了两个星期了,没有任何答案——希望那些普通船员能改进一下!!在

我尝试了所有我在互联网上找到的东西,我目前的设置是使用nose-aep,但我也尝试过标准的单元测试框架,但它给出了几乎相同的问题(问题似乎是app engine补丁,但不清楚如何修复它)。在

使用最简单的测试:

def test():

    #pass
    assert False

pass和fail都按预期运行,但我看到了一个不影响结果的异常:

^{pr2}$

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

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.

Tags: infrompyauthappmodelslineusers
1条回答
网友
1楼 · 发布于 2024-06-16 11:57:07

我没有使用nose-aep。我们将nosetests与googleappengine插件一起使用。它很容易设置,基本上是通过遵循底部提供的链接。很抱歉,我无法用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/

相关问题 更多 >