我在为我的应用引擎补丁解决方案编写单元测试时遇到了很多麻烦。
我在专家交流中问了这个问题(http://www.experts-exchange.com/Programming/Languages/Scripting/Python/Q_26509115.html),但它已经有两个星期没有回答了 - 希望是SO工作人员可以改进!!
我已经尝试了我在互联网上找到的所有内容,我目前的设置是使用鼻子,但我也尝试过标准的单元测试框架,但它提供了几乎相同的问题(问题似乎是app引擎补丁,但目前尚不清楚如何修复它。)
使用最简单的测试:
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 *
我收到错误消息,表明应用引擎补丁未正确设置。我在下面列出了日志输出。
任何帮助表示赞赏!!
使用鼻子时,错误是:
/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.
答案 0 :(得分:0)
我没有使用nose-aep
。我们将nosetests
与google-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/